아이템 줍기 (BFS, 겹쳐진 사각형 테두리 구하기)
·
Coding Test/programmers
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 테두리 좌표는 *2해서 구해야함 : 인접한 테두리가 구해지면 최단경로로 지나기 때문에 인접한 테두리가 생김 빨간 선과 같이 인접한 테두리를 최단경로로 지남 *2를 해서 구하는 경우 인접 테두리가 생기지 않음 풀이 from collections import deque dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def solution(rectangle, characterX, characterY, itemX, itemY): board=[[-1]*102 for _ in range(102..
단어 변환 (BFS, deque, 리스트 거쳐 target 단어로 변환하기)
·
Coding Test/programmers
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr from collections import deque def solution(begin, target, words): answer = 0 v=[0]*len(words) # 단어 사용체크 리스트 q = deque() q.append([begin, 0]) while q: word, cnt = q.popleft() if word == target: answer = cnt break for i in range(len(words)): word2=words[i] temp_cnt = 0 if not v[i]: # 사용안한..
파이썬 yield, 제너레이터(generator)
·
Python
yield 호출한쪽으로 프로그램 제어를 넘겨주는 키워드 함수 내에서 사용하며, generator객체를 생성 return vs yield >>> print(return_abc()) ['A', 'B', 'C'] >>> print(yield_abc()) 알파벳 하나를 만드는데 1초가 걸리는 함수 import time def return_abc(): alphabets = [] for ch in "ABC": time.sleep(1) alphabets.append(ch) return alphabets def yield_abc(): for ch in "ABC": time.sleep(1) yield ch return for ch in return_abc(): print(ch) # 3초 경과 A B C yield for..
큰 수 만들기 (스택)
·
Coding Test/programmers
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def solution(number, k): stack = [] for x in number: while stack and stack[-1]0: k-=1 stack.pop() stack.append(x) return ''.join(stack[:len(stack)-k])
여행경로 (DFS, 모든 경로 사용해서 모든 노드 방문)
·
Coding Test/programmers
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 무조건 알파벳 순서가 앞서는 곳을 향하도록 여행 경로를 구성하면 문제의 답을 올바르게 구할 수 있음을 보장하지 않음 ticket result [["ICN", "AAA"], ["ICN", "CCC"], ["CCC", "DDD"], ["AAA", "BBB"], ["AAA", "BBB"], ["DDD", "ICN"], ["BBB", "AAA"]] ["ICN", "CCC", "DDD", "ICN", "AAA", "BBB", "AAA", "BBB"] 위 예시에서 처음에 "ICN"에서 출발하여 "AAA"를 먼저 방..
쿼드압축 후 개수 세기 (재귀)
·
Coding Test/programmers
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 분석 배열의 길이가 1이 될 때 까지 4개로 나눔 (재귀) 4개로 나누는 시작 좌표, 길이를 매개변수로 하는 함수 생성 풀이 def solution(arr): answer = [0, 0] def quad(r,c,n): if len(arr) == 1: answer[arr[r][c]] += 1 return else: tg = arr[r][c] for i in range(n): for j in range(n): if arr[r+i][c+j] != tg: n=n//2 quad(r, c, n) quad(r, c+n, ..