728x90
반응형

코딩테스트 5

[Baekjoon 1987 / Python / 골드4] 알파벳

DFS, 백트래킹 문제이다. 상하좌우 탐색을 요하기 때문에 BFS로도 잠시 생각했었으나 백트래킹이 필요했기에 DFS로 진행했다. 어느정도 정석에 가까운 백트래킹 문제 같다. # DFS, 백트래킹import sysinput = sys.stdin.readline# 입력받기R, C = map(int, input().split())board = []for _ in range(R):    board.append(list(input().strip()))# 사전준비directions = [[-1, 0], [1, 0], [0, -1], [0, 1]]visited = [[False] * C for _ in range(R)]visited[0][0] = Truepath = set() # 집합으로 불필요한 중복 알파벳이 들어..

[Baekjoon 2138 / Python / 골드4] 전구와 스위치

그리디 문제이다. 문제는 간단한데 해결 방법이 도저히 떠오르질 않았다. 한번에 3개의 전구가 바뀌니까 엄청나게 많은 경우의 수가 있을 것이라 생각했고, 아무리 생각해도 답을 도출할 방법이 떠오르질 않아서 다른 코드를 참고했다. 근데 참고해도 이해가 잘 안된다. 이 코드가 어째서 정답을 도출하는지. 이론적으론 이해했지만 와닿지가 않는다.# 그리디import sysinput = sys.stdin.readlineN = int(input())origin = list(map(int, input().strip()))target = list(map(int, input().strip()))# 1번 인덱스 전구부터 하나씩 누를지 말지 결정하는 함수def solve(A, B):    press = 0    for i in..

Algorithm/Greedy 2024.09.26

[프로그래머스 / Python] 배열 회전시키기

def solution(numbers, direction) : if direction == 'right' : temp = numbers[-1] numbers[1:] = numbers[0:-1] numbers[0] = temp else : temp = numbers[0] numbers[0:-1] = numbers[1:] numbers[-1] = temp return numbers 정답 코드 'right'일 경우, 소실될 맨 마지막 요소[-1]를 temp 변수에 저장해둔 후 모든 요소를 오른쪽으로 밀어준다. 그리고 저장해둔 temp 값을 [0] 위치에 할당한다. 'left'는 right와 반대로 실시한다.

[프로그래머스 / Python] 주사위 게임 3

def solution(a, b, c, d) : origin = [a,b,c,d] so = list(set(origin)) if len(so) == 1 : # 4개 전부 같을 때 return origin[0] * 1111 elif len(so) == 2 : # 3개가 같거나, 2개/2개 같을 때 for i in origin : if origin.count(i) == 3 : p = i q = [x for x in origin if x != p][0] return (10 * p + q) ** 2 elif origin.count(i) == 2 : p = i q = [x for x in origin if x != p][0] return (p + q) * abs(p - q) elif len(so) == 3 : #..

728x90
반응형