목록Python (42)
눈송이의 개발생활
문제 - 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()] 해..
문제 - 행렬의 덧셈 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문으로 복잡하게 풀었는데 다른 사람의 풀..
프로그래머스 Lv.1 문제를 풀다가 처음 보는 함수가 있어서 정리하려고 한다. 행렬의 덧셈이라는 문제였는데, 나는 이중 for문을 돌면서 각각 원소를 더했지만, 다른 사람의 풀이를 보니 zip()을 이용해서 심플하게 풀었었다. 아래와 같이 나의 코드는.... 정말 길고 복잡하고 못생겼다. 코드가 확 깨끗해지는 함수라서 공부해보았다. # 내 풀이 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)..
문제 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(..
문제 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..
문제 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
문제 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-..
문제 https://www.acmicpc.net/problem/13023 코드 import sys input = lambda: sys.stdin.readline().strip() def dfs(v, depth): global ans visited[v] = 1 if depth == 4: ans = True return for i in graph[v]: if visited[i] == 0: dfs(i, depth + 1) visited[i] = 0 N, M = map(int, input().split()) graph = [[] for _ in range(N)] visited = [0 for _ in range(N)] ans = False for _ in range(M): a, b = map(int, input..