[백준] 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...
[백준] 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...
[백준] 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...
[백준] 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,...
[백준] 10870번 피보나치 수 5 _ 문제 풀이
1. 문제
https://www.acmicpc.net/problem/10870
2. 풀이
def fibo(num):
if num in [0, 1]:
return num
return fibo(num-1) + fibo(num-2)
print(fibo(int(input())))
[백준] 17140번 이차원 배열과 연산 _ 문제 풀이
1. 문제
https://www.acmicpc.net/problem/17140
2. 풀이
삼성 SW 역량테스트 문제입니다. 문제 풀이 방법은 아래와 같습니다.
R 연산은 단순 구현으로 해결할 수 있습니다.
C 연산은 배열을 이용하여 구현하려면 복잡할 수 있습니다. 2차원 배열 Transpose → R 연산 → Transpose 하여 손쉽게 해결합니다.
저와 풀이 방법이 비슷한데 소스코드가 깔끔한 코드가 있습니다. 참고하시면 좋을 것 같습니다. BIU Tistory 문제 해결 방법
유의사항은 아래와 같습니다.
Flag 비트를 사용하지 않으려고 하다가, 출력이 2번 되는(겹치는) 경우가 ...
[백준] 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...
[백준] 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...
[백준] 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
# [...
[백준] 20058번 마법사 상어와 파이어스톰 _ 문제 풀이
1. 문제
https://www.acmicpc.net/problem/20058
2. 풀이
삼성 SW 역량테스트 문제입니다. 풀이는 주석을 통하여 전개했으니, 소스코드를 확인해주세요. 추가로 아래와 같은 시행착오를 겪었습니다.
처음에 문제를 잘 못 이해하여, 풀이에 시간이 오래 걸렸습니다. 백준 문제 질문 을 통해서 확인해보니 아래의 답변을 통해 해결할 수 있었습니다. 예제에서 나온 그림을 보면 아래처럼 이해해도 해결이 되어 이런 문제가 발생했습니다. 답변 주신 분 감사합니다.
skh2080 : 레벨 2면 4x4 행렬 안에서 2x2 4개가 시계방향으로 돈다고 생각하셨죠? 그게 아니라 ...
794 post articles, 80 pages.