목록전체 글 (123)
짱이 될거야
https://school.programmers.co.kr/learn/courses/30/lessons/135808?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 과일 장수가 사과 상자를 포장하고 있습니다. 사과는 상태에 따라 1점부터 k점까지의 점수로 분류하며, k점이 최상품의 사과이고 1점이 최하품의 사과입니다. 사과 한 상자의 가격은 다음과 같이 결정됩니다. 한 상자에 사과를 m개씩 담아 포장합니다. 상자에 담긴 사과 중 가장 낮은 점수가 p (1 ≤ p ≤ k)점인 경우, 사과 한 상자의 가격은 p * m 입니다. 과..
코드의 중복을 막기 위해서, bfs 함수의 인자로 현재 위치 뿐만 아니라 색도 함께 전달했다. 방문하지 않았으면서 색이 일치하는 것들만 counting 하고, 마지막에 제곱해서 결괏값에 더한다. from collections import deque import sys input = sys.stdin.readline def bfs(si, sj, color): army = 0 q = deque() q.append((si, sj)) visited[si][sj] = 1 while q: si, sj = q.popleft() army += 1 for di, dj in [(-1, 0), (1, 0), (0, -1), (0, 1)]: ni, nj = si+di, sj+dj if 0
1. 에러 코드 0부터 10000까지의 수에 대해 소수 여부를 판단할 수 있는 배열을 만든다. 숫자 2의 경우 2의 배수인 4, 6, 8, ... 은 소수가 아니므로 이것을 코드로 구현했다. 이대로 코드를 제출하면 틀리는데, while 문 때문인 것 같다. 2, 3 등 원래 소수인 숫자는 배열에 체크하면 안되고, 그 다음 배수부터 체크해야 하기 때문에 while문을 돌리기 전 수를 2배 해주고 그 수가 10000이하일 때까지만 돌린다. 하지만 그렇게 하면 2~5000까지만 배수로 소수 체크를 하는 것이기 때문에 5001 부터는 체크되지 않는다. 따라서 while num
이 문제는 Memoization 유형을 풀 때처럼 풀었다. 우선 1000의 크기를 가진 리스트를 만들고, 그 안에 수열을 미리 넣어두었다. 이후 입력받는 숫자 A, B 범위에 속하는 리스트 값들을 더해서 출력한다. A, B = map(int, input().split()) arr = [0] * 1000 cnt = 1 # 현재 숫자(1, 2, 3...) tot = 1 # 배열 인덱스 while tot 1000: break cnt += 1 print(sum(arr[A-1:B]))
1. 메모리 초과 이번 문제는 이해하기는 쉬운데, 구현 도중 시간 초과 혹은 메모리 초과 조건이 까다로웠다. 아래처럼 했을 때 메모리 초과가 나왔는데, 각 셀에 대해 bfs를 돌릴 때 조건이 visited[i][j] = 1이면서 arr[i][j] != '#'일 때로 설정해뒀기 때문에 그런 것 같다. # 메모리 초과 from collections import deque import sys input = sys.stdin.readline def bfs(si, sj): global sheep, wolf q = deque() q.append((si, sj)) n_sheep, n_wolf = 0, 0 while q: si, sj = q.popleft() if not visited[si][sj] and arr[si..