문제 https://school.programmers.co.kr/learn/courses/30/lessons/12899 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 3진법으로 전환 후 0 -> 4, 1 -> 1, 2 -> 2로 치환하는 아이디어를 생각했다. - 하지만 3진법으로 변환시 뭔가 꼬여 제대로된 변환이 불가, "n을 한번 나눌때마다 -1씩 해주면 꼬이지 않는다."는 규칙을 검색으로 알게 되었다. ※ 참고 블로그 : https://geonlee.tistory.com/77 def solution(n): number = ['1', '2', ..
문제https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 파이썬- discount를 10개씩 잘라서 want의 개수만큼 있는지 비교def solution(want, number, discount): answer = 0 for i in range(len(discount) - len(want)): bucket = discount[i:i + 10] # discount를 10개씩 bucket에 담아 확인 index,..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12930 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 문자열의 인덱스가 아니라 공백으로 구분되는 각 단어 기준 짝홀을 구분해야 한다. - 공백이 연속으로 오는 경우를 생각하여 홀짝을 잘 구분해야 한다. def solution(s): arr = list(s) index = 0 # 홀짝을 비교하는 index for i in range(len(arr)): if arr[i] == ' ': index = 0 # 공백일 경우 index 초기화 e..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/81302#fn1 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 5개의 대기실, 5*5의 크기가 고정되어 있기 때문에 dfs로 접근했다. (bfs로 접근한 풀이도 많았다) - P를 만날경우 P를 기준으로 거리 2 안에 다른 P가 있는지 확인, 벽과 책상 조건도 확인한다. - 벽으로 막혀있는 X의 경우에는 dfs를 더 깊이 들어가지 않기위해 조건에서 제외했다. - 중간에 res를 넣어 dfs를 진행중인데 조건을 지키지 않은 경우에도 retu..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/131130 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 각 상자를 모두 묶음으로 분류한 후 묶음별 개수로 정렬한다. def solution(cards): visit = [0] * len(cards) cnt = 0 # 상자의 개수 box = [[]] for i in range(len(cards)): index = i while sum(visit) < len(cards): # 모든 상자를 분류 할때까지 확인 if visit[index] =..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 각 배열의 모든 숫자를 나눌 수 있는 가장 큰 수 = 최대 공약수 - 각 배열의 최대 공약수를 구한다 - 각 배열의 최대 공약수가 다른 배열을 나눌 수 없는지 검사 - 조건을 만족하는 최대 공약수 중 더 큰 값이 정답! # 2중 for문으로 구현했으나 시간초과로 통과하지 못했다. def cal(arrayA, arrayB): maxV = 0 for i in range(len(arra..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 각 행의 최대값을 다음 행에 누적하여 더해준다. def solution(land): for i in range(1, len(land)): for j in range(4): land[i][j] += max(land[i - 1][:j] + land[i - 1][j + 1:]) # 이전열이 max값이라면 예외처리 return max(land[-1])
문제 https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 던전의 개수는 8개 이하로 가정하므로 dfs로 접근 def dfs(level, stamina, clear, dungeons, visit): global answer answer = max(clear, answer) if level == len(dungeons): return for i in range(len(dungeons)): if stamina >= dungeons[i][0] a..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/135808 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 상자의 개수만큼 과일을 담아 상자마다 최솟값을 구한다. # 과일 장수 def solution(k, m, score): score.sort(reverse=True) N = int(len(score) / m) # 상자의 개수 price = 0 for i in range(N): fruit = score[m * i: m * (i + 1)] price += min(fruit) * m ret..
문제 4, 13, 413, 134와 같이 숫자가 13과 4를 이용해서 만들 수 있는 수를 불길한 수라고 한다. 그리고 불길한 수가 오름차순으로 나열된 수열을 불길한 수열이라고 한다. 예를 들어 불길한 수열은 다음과 같이 나열될 수 있다. ex) S = {4, 13, 44, 134, 413, 444, 1313......} n이 매개변수로 주어질 때, 불길한 수열에서 n번째 불길한 수를 구하시오. 제한사항 - n은 5,000이하의 자연수이다. 입출력 예 n result 1 4 2 13 3 44 설계 - index를 증가시키며 기존의 배열에서 지속적으로 4와 13을 붙여준다. def solution(n): number = ['4', '13'] index = 0 while 1: # index를 증가시키며 기존의..