코딩 테스트/Baekjoon
백준 온라인 져지 문제 중 풀이해본 문제들의 해결 과정과 코드를 공유하는 내용을 담습니다.
-
문제 보기 : 1931번: 회의실 배정 (acmicpc.net) 문제정답률 : 30%작성 코드 & 풀이 과정 코멘트## 그리디 알고리즘T = int(input())graph = [list(map(int,input().split())) for _ in range(T)]p = max(max(graph))graph.sort(key=lambda x:(x[1],x[0])) #끝나는 시간 순으로 정렬now = 0count = 0for start, end in graph: if start >= now : now = end #그 회의 끝난 시간 count += 1print(count) 처음에는 DFS로 풀이했다.. {1: [4], 3: [5, 8], 0: [6], 5: [7, 9], 6..
S1 1931. 회의실 배정문제 보기 : 1931번: 회의실 배정 (acmicpc.net) 문제정답률 : 30%작성 코드 & 풀이 과정 코멘트## 그리디 알고리즘T = int(input())graph = [list(map(int,input().split())) for _ in range(T)]p = max(max(graph))graph.sort(key=lambda x:(x[1],x[0])) #끝나는 시간 순으로 정렬now = 0count = 0for start, end in graph: if start >= now : now = end #그 회의 끝난 시간 count += 1print(count) 처음에는 DFS로 풀이했다.. {1: [4], 3: [5, 8], 0: [6], 5: [7, 9], 6..
2024.10.18 -
문제 보기 : 2667번: 단지번호붙이기 (acmicpc.net) 문제정답률 : 42%작성 코드 & 풀이 과정 코멘트from collections import dequedef solution(graph,start): graph[start[0]][start[1]]= 0 direction = [(-1,0),(1,0),(0,-1),(0,1)] count = 1 dd = deque([start]) while dd: x,y = dd.popleft() for dx,dy in direction: xx = dx+x ; yy = dy+y if 0graph에서 1인 지점 좌표를 (i,j)로 두는데 이걸 start로 하는데, 이를..
S1 2667. 단지번호붙이기문제 보기 : 2667번: 단지번호붙이기 (acmicpc.net) 문제정답률 : 42%작성 코드 & 풀이 과정 코멘트from collections import dequedef solution(graph,start): graph[start[0]][start[1]]= 0 direction = [(-1,0),(1,0),(0,-1),(0,1)] count = 1 dd = deque([start]) while dd: x,y = dd.popleft() for dx,dy in direction: xx = dx+x ; yy = dy+y if 0graph에서 1인 지점 좌표를 (i,j)로 두는데 이걸 start로 하는데, 이를..
2024.10.18 -
문제 보기 : 2751번: 수 정렬하기 2 (acmicpc.net) 문제정답률 : 31%작성 코드 & 풀이 과정 코멘트1) 시간초과 났던 코드들import heapqT = int(input())def sol(T): a = [] for _ in range(T): heapq.heappush(a,int(input())) for _ in range(T): min_a = heapq.heappop(a) print(min_a)처음에는 heapq로 차례대로 최소값을 출력하는 방식으로 풀이했다. 근데 시간초과 발생.. 흐규T = int(input())a = [int(input()) for i in range(T)]def qsort(arr): if len(arr..
S5 2751. 수 정렬하기 2문제 보기 : 2751번: 수 정렬하기 2 (acmicpc.net) 문제정답률 : 31%작성 코드 & 풀이 과정 코멘트1) 시간초과 났던 코드들import heapqT = int(input())def sol(T): a = [] for _ in range(T): heapq.heappush(a,int(input())) for _ in range(T): min_a = heapq.heappop(a) print(min_a)처음에는 heapq로 차례대로 최소값을 출력하는 방식으로 풀이했다. 근데 시간초과 발생.. 흐규T = int(input())a = [int(input()) for i in range(T)]def qsort(arr): if len(arr..
2024.10.16 -
문제 보기 : 1316번: 그룹 단어 체커 (acmicpc.net) 문제정답률 : 53%작성 코드from collections import dequeT = int(input())def sol(T): answer = 0 for _ in range(T): p = deque(input()) #['h', 'a', 'p', 'p', 'y'] pp = len(p) already = deque() already_element = None while p : element = p.popleft() if already_element == element and element not in already: ..
S5 1316. 그룹 단어 체커문제 보기 : 1316번: 그룹 단어 체커 (acmicpc.net) 문제정답률 : 53%작성 코드from collections import dequeT = int(input())def sol(T): answer = 0 for _ in range(T): p = deque(input()) #['h', 'a', 'p', 'p', 'y'] pp = len(p) already = deque() already_element = None while p : element = p.popleft() if already_element == element and element not in already: ..
2024.10.16 -
문제 보기 : 2178번: 미로 탐색 (acmicpc.net) 문제정답률 : 44%작성 코드 & 풀이 과정 코멘트1) 1차 풀이from collections import dequedef bfs(g,start,n,m): d = [(0,-1),(0,1),(-1,0),(1,0)] vis = [[False]*m for i in range(n)] vis[start[0]][start[1]]=True dd = deque([start]) while dd: x,y = dd.popleft() if x == n-1 and y == m-1: return g[x][y] for dx,dy in d: X = dx+x ; Y =..
S1 2178. 미로 탐색문제 보기 : 2178번: 미로 탐색 (acmicpc.net) 문제정답률 : 44%작성 코드 & 풀이 과정 코멘트1) 1차 풀이from collections import dequedef bfs(g,start,n,m): d = [(0,-1),(0,1),(-1,0),(1,0)] vis = [[False]*m for i in range(n)] vis[start[0]][start[1]]=True dd = deque([start]) while dd: x,y = dd.popleft() if x == n-1 and y == m-1: return g[x][y] for dx,dy in d: X = dx+x ; Y =..
2024.10.09 -
문제 보기 : 1260번: DFS와 BFS (acmicpc.net)문제정답률 : 38%작성 코드n,m,v = map(int,input().split())def dfs(graph,start,visited): visited[start] =True print(start, end = ' ') for n in sorted(graph[start]): if not visited[n]: dfs(graph,n,visited)from collections import dequedef bfs(graph,start,visited): visited[start] = True dd = deque([start]) while dd: node = dd.popl..
S2 1260. DFS와 BFS문제 보기 : 1260번: DFS와 BFS (acmicpc.net)문제정답률 : 38%작성 코드n,m,v = map(int,input().split())def dfs(graph,start,visited): visited[start] =True print(start, end = ' ') for n in sorted(graph[start]): if not visited[n]: dfs(graph,n,visited)from collections import dequedef bfs(graph,start,visited): visited[start] = True dd = deque([start]) while dd: node = dd.popl..
2024.10.09 -
문제 보기 : 10798번: 세로읽기 (acmicpc.net) 문제정답률 : 48.344% 작성 코드a = [input() for i in range(5)]#가장 긴 문자열 길이 찾기max_length = 0for h in range(5): if max_length len(a[k]): pass else: print(a[k][j], end='')풀이 input으로 받은 문자열을 문자열의 길이를 기준으로 정렬을 할 수도 없고.. 각 문자열의 길이를 기준으로 이중 for문을 써야한다는 점에서 시간 복잡도도 고려해야했기에 더 헷갈렸다.무엇보다도 시간을 많이 잡아먹었던 부분은 ( if j+1 > len(a[k]): ) 부분이었다. "+1"을 떠올리지 ..
B1 10798. 세로읽기문제 보기 : 10798번: 세로읽기 (acmicpc.net) 문제정답률 : 48.344% 작성 코드a = [input() for i in range(5)]#가장 긴 문자열 길이 찾기max_length = 0for h in range(5): if max_length len(a[k]): pass else: print(a[k][j], end='')풀이 input으로 받은 문자열을 문자열의 길이를 기준으로 정렬을 할 수도 없고.. 각 문자열의 길이를 기준으로 이중 for문을 써야한다는 점에서 시간 복잡도도 고려해야했기에 더 헷갈렸다.무엇보다도 시간을 많이 잡아먹었던 부분은 ( if j+1 > len(a[k]): ) 부분이었다. "+1"을 떠올리지 ..
2024.08.17 -
문제 보기 : 2566번: 최댓값 (acmicpc.net) 문제정답률 : 41.161%작성 코드 ## 틀렸던 답 ls = list(input().split() for turn in range(9))max = 0row = 0col = 0for i in range(9): for j in range(9): ls[i][j] =int(ls[i][j]) if max ## 맞은 답ls = list(input().split() for turn in range(9))max = 0row = 0col = 0for i in range(9): for j in range(9): ls[i][j] =int(ls[i][j]) if max풀이틀린 코딩이랑 다른 부분이 없어 ..
B3 2566. 최댓값문제 보기 : 2566번: 최댓값 (acmicpc.net) 문제정답률 : 41.161%작성 코드 ## 틀렸던 답 ls = list(input().split() for turn in range(9))max = 0row = 0col = 0for i in range(9): for j in range(9): ls[i][j] =int(ls[i][j]) if max ## 맞은 답ls = list(input().split() for turn in range(9))max = 0row = 0col = 0for i in range(9): for j in range(9): ls[i][j] =int(ls[i][j]) if max풀이틀린 코딩이랑 다른 부분이 없어 ..
2024.08.17