본문 바로가기
320x100

PS84

[CLASS 3]백준 9095번, 9375번, 9461번, 11399번 9095번 : 1, 2, 3 더하기 아.. ㅠㅠ 이게 뭐라고 고민했을까... 종이에 써보면 바로 알 수 있는데 종이 안쓰고 머리로만 어찌 해보려다가 괜히 시간만 날렸다. dp라는 것은 바로 알 수 있고, 규칙성을 찾는 것이 중요하다. 4 이상의 수에 대해서 그 수를 1,2,3 의 합으로 만들 수 있는 모든 조합은 그 수 - 1 , 그 수 - 2, 그 수 - 3 을 만들 수 있는 경우의 수의 합이다. 그냥 간단하게 dp[i] = dp[i-1] + dp[i-2] + dp[i-3] 인 것이다! 왜냐하면, 그 수 - 1 의 모든 경우의 앞, 뒤에 +1을 해주고, 그 수 - 2 의 모든 경우의 앞 뒤에 +2를 해주고, 그 수 - 3의 모든 경우의 앞 뒤에 +3을 해주는 경우의 수 만큼이 구하려는 수의 경우의 수 .. 2021. 2. 1.
[CLASS 3]백준 2630번 - 색종이 만들기 2630번 : 색종이 만들기 기초적인 분할 정복 문제라고 할 수 있겠다. 큰 사각형부터 시작해서 조건이 맞지 않는다면 작은 사각형 4개로 나누는 과정을 반복하여 해결할 수 있다. 재귀함수로 구현할 수 있다. 내 코드: import sys input = sys.stdin.readline n = int(input()) p = [list(map(int,input().split())) for _ in range(n)] zero = 0 one = 0 def find(y,x,n): global zero,one temp = p[y][x] for ty in range(y,y+n): for tx in range(x,x+n): if temp != p[ty][tx]: find(y,x,n//2) find(y,x+n//2,n/.. 2021. 1. 31.
[CLASS 3]백준 2606번 - 바이러스 2606번 : 바이러스 DFS 혹은 BFS의 기초 문제이다. 둘 중 하나의 방법을 통해 1번 컴퓨터와 연결된 컴퓨터를 모두 방문한 후 그 수를 출력해주면 된다. 먼저 DFS와 재귀함수로 푼 풀이이다. 내 코드(DFS,재귀): import sys input = sys.stdin.readline coms = [set() for _ in range(int(input())+1)] for _ in range(int(input())): a, b = map(int,input().split()) coms[a].add(b) coms[b].add(a) def dfs(graph,v): for i in graph[v]: if not visited[i]: visited[i] = True dfs(graph,i) visited =.. 2021. 1. 31.
[Codewars]4kyu - The observed PIN 이 문제는 문제가 좋다기보다는 파이썬의 새로운 모듈을 알게 된 문제여서 글을 쓴다.. 문제는 간단하다. 비밀번호로 추정되는 숫자가 들어오는데, 확실하지 않아서 해당 수에서 인접한(상하좌우, 대각선 제외) 숫자까지 모두 눌러봐야 하는 상황에서 가능한 모든 비밀번호를 return하면 된다. 나는 이렇게 힘들게 작성했다. def get_pins(observed): a = [] for char in observed: num = int(char) temp = [num] if num == 0: temp.append(8) a.append(temp) continue if num == 8: temp.append(0) if num - 1 >= 1 and num % 3 != 1: temp.append(num-1) if nu.. 2021. 1. 31.