Home

[백준] 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

[백준] 17825번 주사위 윷놀이 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/17825 2. 풀이 삼성 SW 역량테스트 문제입니다. 풀이 순서는 아래와 같습니다. 위와 같이 원들에 대하여 index를 지정해놓고, 배열을 이용하여 [점수, 다음 index]를 기록해놓습니다. dfs를 이용하여 모든 경우의 수를 확인합니다. 4개의 말에 대하여 10번의 turn 에 대하여 모두 확인해봐도 4^10 이기 때문에 그렇게 큰 숫자가 아닙니다. START, END = 0, 32 horse = [0,0,0,0] dice_list = list(map(int, input().split())) answer = 0 # [...

Read more

[백준] 20058번 마법사 상어와 파이어스톰 _ 문제 풀이

1. 문제 https://www.acmicpc.net/problem/20058 2. 풀이 삼성 SW 역량테스트 문제입니다. 풀이는 주석을 통하여 전개했으니, 소스코드를 확인해주세요. 추가로 아래와 같은 시행착오를 겪었습니다. 처음에 문제를 잘 못 이해하여, 풀이에 시간이 오래 걸렸습니다. 백준 문제 질문 을 통해서 확인해보니 아래의 답변을 통해 해결할 수 있었습니다. 예제에서 나온 그림을 보면 아래처럼 이해해도 해결이 되어 이런 문제가 발생했습니다. 답변 주신 분 감사합니다. skh2080 : 레벨 2면 4x4 행렬 안에서 2x2 4개가 시계방향으로 돈다고 생각하셨죠? 그게 아니라 ...

Read more