Python/코딩 문제(34)
-
[리트코드] 46. Permutations
# 문제 설명 서로 다른 정수로 이루어진 배열을 입력받아, 모든 가능한 순열을 반환해라. # 입출력 예시 입력 출력 [1,2,3] [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] [0,1] [[0,1],[1,0]] [1] [[1]] # 코드 풀이 1. DFS로 풀기 from collections import defaultdict class Solution: def __init__(self): self.cp = [] # 첫번째 노드에 대한 트리 def visit_path(self, i, path, visited, nums): visited[i] = True # 방문 표시 path.append(nums[i]) if len(path) >= len(nums): # 탈출 ..
2022.02.01 -
[프로그래머스] 위장
# 문제 설명 매일 다른 옷을 조합하여 입으려고 한다. 의상 정보들이 주어질 때, 가능한 의상 조합의 수를 반환해라. 각 의상 정보는 의상이름과 의상종류가 함께 주어진다. 같은 의상이름은 없으며, 하루에 최소 1개의 의상은 입는다. # 입출력 예시 입력 출력 [["yellowhat", "headgear"], ["bluesunglasses", "eyewear"], ["green_turban", "headgear"]] 5 [["crowmask", "face"], ["bluesunglasses", "face"], ["smoky_makeup", "face"]] 3 # 코드 풀이 from collections import defaultdict def solution(clothes): dic = defaultdic..
2022.02.01 -
[프로그래머스] 여행경로
# 문제 설명 주어진 항공권 티겟들을 모두 이용하여, 방문하는 공항 경로를 반환해라. 첫 공항은 항상 "ICN"에서 출발한다. 모든 항공은 알파벳 대문자 3글자로 이루어지며, 만일 가능한 경로가 2개 이상이라면 알파벳 순서가 앞서는 경로를 반환한다. 항공권 티겟 정보 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 것을 의미한다. # 입출력 예시 입력 출력 [["ICN", "JFK"], ["HND", "IAD"], ["JFK", "HND"]] ["ICN", "JFK", "HND", "IAD"] [["ICN", "SFO"], ["ICN", "ATL"], ["SFO", "ATL"], ["ATL", "ICN"], ["ATL","SFO"]] ["ICN", "ATL", "ICN", "SFO", "AT..
2022.02.01 -
[리트코드] 328. Odd Even Linked List
# 문제 설명 연결리스트가 주어질 때, 짝수 번째 인덱스가 홀수 번째 인덱스 뒤에 오도록 재정렬하여 반환해라. # 입출력 예시 입력 출력 1 -> 2 -> 3 -> 4 -> 5 1 -> 3 -> 5 -> 2 -> 4 # 코드 풀이 1. 재귀로 풀이 from copy import copy class Solution: def getOddnEven(self, now: Optional[ListNode]) -> Optional[ListNode]: rev = None if now and now.next: rev, rev.next = copy(now.next), rev now.next, rev.next = self.getOddnEven(now.next.next) return now, rev # 순방향, 역방향 def..
2022.01.18 -
[리트코드] 24. Swap Nodes in Pairs
# 문제 설명 주어진 연결리스트에 대해서, 2개의 인접한 노드들을 swap한 연결리스트를 반환해라. # 입출력 예시 입력 출력 1 -> 2 -> 3 -> 4 2 -> 1 -> 4 -> 3 1 1 # 코드 풀이 1. 값만 바꾸기 class Solution: def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]: now = head while now and now.next: # 값만 바꾸기 now.val, now.next.val = now.next.val, now.val # swap now = now.next.next return head # 코드 풀이 2. 반복으로 풀이 class Solution: def swapPairs(self, he..
2022.01.18 -
[리트코드] 2. Add Two Numbers
# 문제 설명 역순으로 단일 10진수 (0~9)값을 저장하는 연결리스트 2개가 주어진다. 2개의 수를 합친 값을 연결리스트로 반환해라. 단, 주어진 연결리스트는 비어있지 않고, 음수 값을 저장하지 않는다. # 입출력 예시 입력 출력 2 -> 4 -> 3 5 -> 6 -> 4 7 -> 0 -> 8 0 0 0 9 -> 9 -> 9 -> 9 -> 9 -> 9 -> 9 9 -> 9 -> 9 -> 9 8 -> 9 -> 9 -> 9 -> 0 -> 0 -> 0 -> 1 첫번째 입력을 설명하자면, 각각의 연결리스트를 역순으로 한 342 + 465 을 계산하면, 807 이 된다. # 코드 풀이 1. 재귀를 사용한 풀이 class Solution: def addTwoNumbers(self, l1: Optional[List..
2022.01.16