Home

[백준] 2075번 N번째 큰 수 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/2075 2. 풀이 2.1. 메모리 초과 코드 배열 하나에 모든 수를 넣은 뒤에 정렬하고 답을 출력. 메모리 초과가 발생하였습니다. n = int(input()) arr = [] [arr.extend(list(map(int, input().split()))) for _ in range(n)] print(sorted(arr)[-n]) 2.2. 정답 코드 n개만큼 계속 배열을 추가하면서 정렬하고 추가하는 과정을 반복합니다. n = int(input()) arr = [] for _ in range(n): arr.extend(lis...

Read more

[백준] 1302번 베스트셀러 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/1302 2. 풀이 개수를 딕셔너리를 이용하여 확인해 줍니다. 이후, (-개수, 이름) 으로 만들어진 배열을 정렬하면 개수가 가장 많고 사전순으로 가장 이름이 빠른 요소가 맨 앞에 나오게 됩니다. n = int(input()) dict = {} for _ in range(n): now_str = input() if dict.get(now_str, 0): dict[now_str] += 1 else: dict[now_str] = 1 print(sorted([(-val, key) for key, ...

Read more

[백준] 9095번 1, 2, 3 더하기 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/9095 2. 풀이 2.1. 내 풀이 dfs 를 이용하여 문제를 해결해주었습니다. 방문한 곳은 visited 배열로 표기하여 사용한 숫자를 체크하였고, 이후 reduce를 이용하여 사용한 숫자의 배치 가능한 개수를 구했습니다(예_ 1,2,3,3 은 4!/2! ). from functools import reduce def val(n, n_1, n_2, n_3): global is_visited, answer if is_visited[n_1][n_2][n_3]: return is_visited[n_1][n...

Read more

[백준] 3986번 좋은 단어 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/3986 2. 풀이 스택을 이용하여 문제를 해결하면 손쉽게 해결할 수 있습니다. 스택에 문자열을 넣으면서 같은 문자열이 2개 겹치면 바로 제거해줍니다. 아닌 경우 계속 진행하고 최종으로 배열에 아무 문자도 남아있지 않으면 좋은 단어로 판별합니다. n = int(input()) ans = 0 for _ in range(n): stk = [] for x in input(): if len(stk) == 0: stk.append(x) continue if stk...

Read more

[백준] 4963번 섬의 개수 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/4963 2. 풀이 dfs 를 이용하여 문제를 해결해주었습니다. 8방향 모두를 확인하면서 문제를 해결해야합니다. import sys sys.setrecursionlimit(10**4) # 상, 상우, 우, 우하, 하, 좌하, 좌, 좌상 dr = [-1, -1, 0, 1, 1, 1, 0, -1] dc = [0, 1, 1, 1, 0, -1, -1, -1] def dfs(w, h, maps, is_visited, r, c): if is_visited[r][c] or maps[r][c] == 0: return is_vi...

Read more

[백준] 11729번 하노이 탑 이동 순서 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/11729 2. 풀이 hanoi 탑은 출발지(from), 임시장소(sub), 도착지(to) 3가지로 이루어져있습니다. 순서는 아래와 같습니다. n번째 요소를 제외한 n-1개의 요소들을 sub로 옮깁니니다. n번째 요소를 바로 도착지 to로 옮깁니다. sub에 있는 요소들을 from을 임시장소로 이용하여 to로 옮깁니다. move_arr = [] def hanoi(n, fromm, sub, to): if n == 0: return hanoi(n - 1,...

Read more

[백준] 17140번 이차원 배열과 연산 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/17140 2. 풀이 삼성 SW 역량테스트 문제입니다. 문제 풀이 방법은 아래와 같습니다. R 연산은 단순 구현으로 해결할 수 있습니다. C 연산은 배열을 이용하여 구현하려면 복잡할 수 있습니다. 2차원 배열 Transpose → R 연산 → Transpose 하여 손쉽게 해결합니다. 저와 풀이 방법이 비슷한데 소스코드가 깔끔한 코드가 있습니다. 참고하시면 좋을 것 같습니다. BIU Tistory 문제 해결 방법 유의사항은 아래와 같습니다. Flag 비트를 사용하지 않으려고 하다가, 출력이 2번 되는(겹치는) 경우가 ...

Read more

[백준] 17822번 원판 돌리기 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/17822 2. 풀이 삼성 SW 역량테스트 문제입니다. 풀이는 주석을 통하여 서술하였으니 참고해주세요. 아래 0으로 나눠버리는 런타임 에러 (ZeroDivisionError) 예외 케이스가 존재했는데, 이런 예외 케이스를 더 고려하기 위해 많이 연습을 해야될 것 같습니다. from collections import deque N, M, T = map(int, input().split()) circles = [] for _ in range(N): circles.append(list(map(int, input().split()))) f...

Read more

[백준] 16234번 인구 이동 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/16234 2. 풀이 삼성 SW 역량테스트 문제입니다. 풀이 순서는 아래와 같습니다. BFS를 이용하면 되는 문제입니다. BFS를 사용할 때, is_visited 배열을 생성하여 만들었는데, 이번 경우에는 벽을 기준으로 다른 나라에서 한 나라로 접근할 수 있는 경우의 가지수가 4가지 입니다. 그래서 저는 visited를 3중 배열로 만들어, 4개의 방향에서 각각 방문해도 가능할 수 있게 배열을 생성했습니다. from collections import deque N, L, R = map(int, input().split()) A = [lis...

Read more