본문 바로가기

프로그램/Python22

[프로그래머스 문제풀이] N으로 표현 DP문제는 아무래도 재귀 형식으로 표현하여 sub 문제들을 해결하여 큰 문제를 해결할 수있도록 하는 틀을 짜는 능력이 중요한것 같다. 이 문제의 경우에는 생각해보았지만, 해당 틀을 떠올리지 못해서 다른 소스코드를 참고하여 짠 코드이다. 발상 방법이야 여러개 있지만 내가 동작 시킨 코드는 아래와 같다. def calc(A, B): ret = set() for a in A: for b in B: ret.add(a + b) ret.add(a - b) ret.add(a * b) if b != 0: ret.add(a // b) return list(ret) def solution(N, number): answer = 0 # merge plus substract times divide result = dict() .. 2022. 4. 21.
[프로그래머스 문제풀이] 가장 먼 노드 그래프를 탐색하며 가장 먼 노드를 찾는 문제이다. 나는 BFS를 이용하여 거리를 구한 뒤 가장 먼노드를 찾았다. def solution(n, edge): answer = 0 v = [set() for _ in range(n+1)] visit = [-1] * (n+1) for e in edge: v[e[0]].add(e[1]) v[e[1]].add(e[0]) def bfs(root): from collections import deque queue = deque() queue.append((root, 0)) visit[root] = 0 while queue: n, l = queue.popleft() for e in v[n]: if visit[e] == -1: visit[e] = l+1 queue.appen.. 2022. 4. 19.
[프로그래머스 문제풀이] 네트워크 문제 풀이 상 깊이/너비 우선 탐색 유형으로 풀이되는 문제이다. 내가 풀은 방법은 아래와 같다. def solution(n, computers): answer = 0 visited = [0] * n def dfs(i): nonlocal answer visited[i] = 1 for n, c in enumerate(computers[i]): if c == 1: if 0 == visited[n]: visited[n] = 1 dfs(n) for i in range(n): if visited[i] == 0: dfs(i) answer+= 1 return answer통상 깊이우선탐색을 사용할 때는 스택을 사용하고, 너비우선탐색을 사용할 때는 큐를 사용하는데 이 부분이 현재는 익숙하지가 않아 재귀문법으로 풀이하였다... 2022. 4. 19.
[Python Challenge] 파이썬 챌린지 - 9 새로운 페이지에 들어가면 다음과 같은 파일을 볼 수 있다. 제목은 'connect the dots'로 나와 있는데 거의 당연하게도 사진에 나와 있는 선들을 연결하면 아무것도 연상되지 않는다. 흠... 그렇다면 일단 소스를 보자. 소스를 보니 이전 단계들의 솔루션을 어떻게 접근 가능한지 설명한 주석이 있다. 페이지로 들어가보면 여러 언어로 해결한 솔루션들이 제시되어 있는데 페이지 맨 아래단에 보면 문제에서 그림으로 나와져 있는 벌 모양을 어떻게 그리는지 코드가 설명되어 있다. 위 코드를 실행시켜주면 ** 주 : ID와 PW를 입력 한 뒤 솔루션을 보기 위해서는 pc를 pcc로 바꾸는 것 뿐만 아니라 주소에 ID와 PW를 넣어주어야 한다. 형식은 아래와 같다.http://[ID]:[PW]@www.python.. 2017. 7. 2.
[Python Challenge] 파이썬 챌린지 - 8 맨 처음 접속하면 벌이 꽃 위에 있는 그림이 보인다. 잘 관찰하다 보면 벌을 클릭 할 수 있다는 것을 알 수 있다. 벌을 클릭하게 되면 아이디와 비밀번호를 요구하게 된다. 아이디와 비밀번호에 대한 힌트는 소스코드에서 얻을 수 있는데,소스코드에 주석처리된 부분을 보면 다음과 같음을 볼 수 있다. 보게 되면 (아마도) un이 아이디이고 pw가 비밀번호일 것이라는 것을 예측 할 수 있다. 페이지의 힌트는 where is the missing link? 라고 쓰여져 있고, 소스코드 상의 맵의 이름은 notinsect이다. 1. bee? buzz? 벌은 버즈 하고 운다. 2. BZh91AY 를 구글링 해보면.... 이러한 이유로 bz 압축을 풀면 답이 나올 것임을 예상 할 수 있다. bz2 패키지를 이용하여 코딩.. 2017. 4. 11.
파이썬 int형을 str형으로 바꾸어 출력하기 파이썬을 사용하다 보면 print 구문을 많이 사용하게 된다. 숫자를 프린트 할 때에는 print num 과 같이 간단하게 사용할 수 있지만, 다른 문자열과 같이 프린트 할 때에 print "str" + num 과 같이 사용하면 에러가 나게 된다. 이 때 문자열과 숫자를 같이 프린트 할 수 있는 방법은 다음과 같다. 123456 num = 123 print "use str : " + str(num)print "use backquote : " + `num`print "use : %d" %(num)cs 실행한 결과는 다음과 같다. use str : 123use backquote : 123use : 123 주의할 점은 5번째 줄에서 사용한 `는 작은 따옴표가 아니라 숫자 1왼쪽에 있는 기호 `이라는 점이다. .. 2017. 4. 11.