목록Algorithm (55)
눈송이의 개발생활
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/z0vJ6/btrvt2O7cuU/J512k0lKyAR1oN1e2aexj1/img.png)
문제 - 정수 제곱근 판별 https://programmers.co.kr/learn/courses/30/lessons/12934 내 코드 def solution(n): sqrt = n**(1/2) if sqrt.is_integer() : return (sqrt+1)**2 else: return -1 다른 사람 풀이 def solution(n): sqrt = n**(1/2) if sqrt % 1 == 0: return (sqrt+1)**2 else: return -1 해결 방법 n에 제곱근을 씌우고 정수로 떨어지는 숫자를 찾을 때 is_integer() 함수를 사용했었다. float type의 수가 정수(int)인지 아닌지 확인할 때 사용하는 함수라고 한다. return 값은 boolean! 다른 사람의 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/IAWPF/btrvnVhoedR/OhVHxgSCDppPY4lCvIVM91/img.png)
문제 - 짝수와 홀수 https://programmers.co.kr/learn/courses/30/lessons/12937 내 코드 def solution(num): if num % 2 == 0: return "Even" else: return "Odd" 다른 사람 풀이 def solution(num): return num % 2 and "Odd" or "Even" 해결 방법 이 문제를 보면서 프로그래머스 레벨 1 문제들은 코드를 간결하게 쓰는 것을 연습하는 용도이라는 것을 알았다. 쉽게 풀 수 있었지만 다른 사람이 쓴 풀이를 보면 감탄이 나왔다. 어떻게 저렇게 심플하고 예쁘게 코드를 바로 짤 수 있는거지....😮 아래 풀이를 더 설명해보자면, 파이썬은 앞에서부터 논리 연산을 한다고 한다. 예를 들어 n..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/qxpoX/btrvatrkpkq/rzdp0aAr9Qtrnjfv5XPhK1/img.png)
문제 - 2016년 https://programmers.co.kr/learn/courses/30/lessons/12901 내 코드 day = ['FRI','SAT','SUN', 'MON','TUE','WED','THU'] end = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] def solution(a, b): answer = day[(sum(end[:a-1]) + b-1) % 7] return answer 다른 사람 풀이 import datetime def solution(a, b): date = 'MON TUE WED THU FRI SAT SUN'.split() return date[datetime.datetime(2016, a, b).weekday()] 해..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/d4eBgy/btru7sUYf7G/nvK8fafmBPP68n7r4bUfik/img.png)
문제 - 행렬의 덧셈 https://programmers.co.kr/learn/courses/30/lessons/12950 내 코드 def solution(arr1, arr2): answer = [] for i in range(len(arr1)): answer.append([]) for j in range(len(arr1[0])): answer[i].append(arr1[i][j] + arr2[i][j]) return answer 다른 사람 풀이 def solution(arr1, arr2): answer = [[c + d for c, d in zip(a, b)] for a, b in zip(arr1, arr2)] return answer 해결 방법 나는 이중 for문으로 복잡하게 풀었는데 다른 사람의 풀..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ciWSSC/btruk47y8lr/bQNXPulNlkXKfdbaaDobxk/img.png)
문제 https://www.acmicpc.net/problem/1991 코드 import sys input = lambda : sys.stdin.readline().strip() def preorder(root): if root == '.': return print(root, end="") preorder(tree[root][0]) preorder(tree[root][1]) def inorder(root): if root == '.': return inorder(tree[root][0]) print(root, end="") inorder(tree[root][1]) def postorder(root): if root == '.': return postorder(tree[root][0]) postorder(..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bsDvXh/btrtTLAyY0D/mrmHedSQZlkWtBzkfT0bn1/img.png)
문제 https://www.acmicpc.net/problem/11725 코드 from collections import deque import sys input = lambda : sys.stdin.readline().strip() def bfs(): queue = deque() queue.append(1) while queue: node = queue.popleft() for i in graph[node]: if parent[i] == 0: parent[i] = node queue.append(i) N = int(input()) graph = [[] for _ in range(N+1)] parent = [0 for _ in range(N+1)] for _ in range(N-1): a, b = map..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dmc5ab/btrtNQCDLbb/0wWo9rIjrP8pKcWSJpirN0/img.png)
문제 https://www.acmicpc.net/problem/7576 코드 from collections import deque import sys input = lambda: sys.stdin.readline().strip() def bfs(): day = 0 while queue: day += 1 for _ in range(len(queue)): x, y = queue.popleft() for dx, dy in [(-1, 0), (1, 0), (0, 1), (0, -1)]: nx, ny = x + dx, y + dy if 0
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bFYgUb/btrtDEu7Nfd/47iUHrMYLto2edHOulB5x0/img.png)
문제 https://www.acmicpc.net/problem/14226 코드 from collections import deque import sys input = lambda : sys.stdin.readline().strip() def bfs(s, c): queue = deque() queue.append((s, c)) while queue: s, c = queue.popleft() if dist[s][s] == -1: #방문하지 않은 경우, 화면에서 클립보드로 dist[s][s] = dist[s][c] + 1 queue.append((s, s)) if s+c = 0 and dist[s-1][c] == -1: #삭제 dist[s-1][c] = dist[s][c] + 1 queue.append((s-..