코딩 테스트/Baekjoon
백준 온라인 져지 문제 중 풀이해본 문제들의 해결 과정과 코드를 공유하는 내용을 담습니다.
-
문제 보기 : 7576번: 토마토 문제정답률 : 37%작성 코드from collections import dequedef bfs(graph): directions = [(-1,0),(0,-1),(0,1),(1,0)] while dd: x,y = dd.popleft() for dx,dy in directions: xx = x+dx ; yy = y+dy if 0= 1: print(count-1)else: print(0)풀이bfs 알고리즘을 사용했고, bfs 함수 내 graph는 '입력'으로 받는 ls와 같으며, 정석적인 bfs 알고리즘 문제의 visited 리스트를 담당하기도 한다.가로 m, 세로 n에 해당하는 리스트를 ..
G5 7576. 토마토문제 보기 : 7576번: 토마토 문제정답률 : 37%작성 코드from collections import dequedef bfs(graph): directions = [(-1,0),(0,-1),(0,1),(1,0)] while dd: x,y = dd.popleft() for dx,dy in directions: xx = x+dx ; yy = y+dy if 0= 1: print(count-1)else: print(0)풀이bfs 알고리즘을 사용했고, bfs 함수 내 graph는 '입력'으로 받는 ls와 같으며, 정석적인 bfs 알고리즘 문제의 visited 리스트를 담당하기도 한다.가로 m, 세로 n에 해당하는 리스트를 ..
2024.10.30 -
문제 보기 : 2606번: 바이러스 문제정답률 : 46%작성 코드def dfs(graph,start,visited): visited[start]=True answer = 1 for node in graph[start]: if not visited[node]: answer += dfs(graph,node,visited) return answerT = int(input())n = int(input())graph = {i+1:[] for i in range(T)}for _ in range(n): n1,n2 = map(int,input().split()) graph[n1].append(n2) graph[n2].append(n1)visited..
S3 2606. 바이러스문제 보기 : 2606번: 바이러스 문제정답률 : 46%작성 코드def dfs(graph,start,visited): visited[start]=True answer = 1 for node in graph[start]: if not visited[node]: answer += dfs(graph,node,visited) return answerT = int(input())n = int(input())graph = {i+1:[] for i in range(T)}for _ in range(n): n1,n2 = map(int,input().split()) graph[n1].append(n2) graph[n2].append(n1)visited..
2024.10.25 -
문제 보기 : 1463번: 1로 만들기 문제정답률 : 33%작성 코드from collections import dequedef find1(n): visited = [-1]*(n+1) visited[n] = 0 dd = deque([n]) while dd: now = dd.popleft() can = [] if now % 3 ==0: can.append(now//3) if now%2 == 0: can.append(now//2) can.append(now-1) for value in can: if visited[value]== -1: ..
S3 1463. 1로 만들기문제 보기 : 1463번: 1로 만들기 문제정답률 : 33%작성 코드from collections import dequedef find1(n): visited = [-1]*(n+1) visited[n] = 0 dd = deque([n]) while dd: now = dd.popleft() can = [] if now % 3 ==0: can.append(now//3) if now%2 == 0: can.append(now//2) can.append(now-1) for value in can: if visited[value]== -1: ..
2024.10.25 -
문제 보기 : 9012번: 괄호 문제정답률 : 46%작성 코드T = int(input())for _ in range(T): check = input() if len(check)%2!=0: print('NO') continue calcul = 0 ; a = True for i in check: if i=='(': calcul += 1 elif i == ')': calcul -= 1 if calcul 풀이시간초과가 날까봐 무서웠는데 그런 이슈 없이 넘어갔다. 괄호는 무조건 짝수개로 쌍을 이루니, 홀수개인 상황으로 예외처리를 했다.그리고 calcul을 계산하는데 '('이 등장하면 +1,..
S4 9012. 괄호문제 보기 : 9012번: 괄호 문제정답률 : 46%작성 코드T = int(input())for _ in range(T): check = input() if len(check)%2!=0: print('NO') continue calcul = 0 ; a = True for i in check: if i=='(': calcul += 1 elif i == ')': calcul -= 1 if calcul 풀이시간초과가 날까봐 무서웠는데 그런 이슈 없이 넘어갔다. 괄호는 무조건 짝수개로 쌍을 이루니, 홀수개인 상황으로 예외처리를 했다.그리고 calcul을 계산하는데 '('이 등장하면 +1,..
2024.10.23 -
문제 보기 : 10844번: 쉬운 계단 수 문제정답률 : 30%작성 코드 & 풀이 과정 코멘트longg = int(input())from collections import dequeanswer = 0start = [str(i) for i in range(1,10)]start = deque(start)while start: st = start.popleft() if len(st)==longg: answer += 1 elif int(st[-1]) == 0: #10 start.append(st+"1") elif int(st[-1]) == 9: start.append(st+"8") else: start.append(st+ str(in..
S1 10844. 쉬운 계단 수문제 보기 : 10844번: 쉬운 계단 수 문제정답률 : 30%작성 코드 & 풀이 과정 코멘트longg = int(input())from collections import dequeanswer = 0start = [str(i) for i in range(1,10)]start = deque(start)while start: st = start.popleft() if len(st)==longg: answer += 1 elif int(st[-1]) == 0: #10 start.append(st+"1") elif int(st[-1]) == 9: start.append(st+"8") else: start.append(st+ str(in..
2024.10.23 -
문제 보기 : 2156번: 포도주 시식 문제정답률 : 32%작성 코드T = int(input())wine = [0]*(T+1)for i in range(1,T+1): wine[i]=int(input())cost = [0]*(T+1)# wine = [0, 6, 10, 13, 9, 8, 1]# cost = [0, 6, 16, 19, ...]if T>=1: cost[1] = wine[1]if T>=2: cost[2] = wine[1]+wine[2]if T>=3: cost[3] = max(wine[1]+wine[2],wine[1]+wine[3],wine[2]+wine[3])for i in range(4, T+1): cost[i] = max(cost[i-1], cost[i-2]+win..
S1 2156. 포도주 시식문제 보기 : 2156번: 포도주 시식 문제정답률 : 32%작성 코드T = int(input())wine = [0]*(T+1)for i in range(1,T+1): wine[i]=int(input())cost = [0]*(T+1)# wine = [0, 6, 10, 13, 9, 8, 1]# cost = [0, 6, 16, 19, ...]if T>=1: cost[1] = wine[1]if T>=2: cost[2] = wine[1]+wine[2]if T>=3: cost[3] = max(wine[1]+wine[2],wine[1]+wine[3],wine[2]+wine[3])for i in range(4, T+1): cost[i] = max(cost[i-1], cost[i-2]+win..
2024.10.22 -
문제 보기 : 1697번: 숨바꼭질 문제정답률 : 26%작성 코드from collections import dequedef find(start,bro): if start >= bro: #동생이 더 앞에 있는 경우 return start-bro visited = [-1]*100001 visited[start] = 0 dd = deque([start]) while dd: now = dd.popleft() can = (now-1,now+1,2*now) for jump in can: if jump == bro : return visited[now]+1 if 0풀이1차원..
S1 1697. 숨바꼭질문제 보기 : 1697번: 숨바꼭질 문제정답률 : 26%작성 코드from collections import dequedef find(start,bro): if start >= bro: #동생이 더 앞에 있는 경우 return start-bro visited = [-1]*100001 visited[start] = 0 dd = deque([start]) while dd: now = dd.popleft() can = (now-1,now+1,2*now) for jump in can: if jump == bro : return visited[now]+1 if 0풀이1차원..
2024.10.22 -
문제 보기 : 1149번: RGB거리 문제정답률 : 56%작성 코드 & 풀이 과정 코멘트## DPT = int(input())cost = [list(map(int,input().split())) for _ in range(T)]# cost = [[26,40,83],[49,60,57],[13,89,99]]color = [[0]*3 for _ in range(T)]color[0] = cost[0]# color = [[26,40,83],[0,0,0],[0,0,0]]for i in range(1,T): color[i][0] = cost[i][0]+ min(color[i-1][1],color[i-1][2]) #[49+40, 0, 0] / color[i][1] = cost[i][1]+ min(colo..
S1 1149. RGB거리문제 보기 : 1149번: RGB거리 문제정답률 : 56%작성 코드 & 풀이 과정 코멘트## DPT = int(input())cost = [list(map(int,input().split())) for _ in range(T)]# cost = [[26,40,83],[49,60,57],[13,89,99]]color = [[0]*3 for _ in range(T)]color[0] = cost[0]# color = [[26,40,83],[0,0,0],[0,0,0]]for i in range(1,T): color[i][0] = cost[i][0]+ min(color[i-1][1],color[i-1][2]) #[49+40, 0, 0] / color[i][1] = cost[i][1]+ min(colo..
2024.10.19