목록프로그래머스 (31)
오랑우탄의 반란
오늘도 오랑이는 문제를 풉니다. 덧칠하기 풀이 과정처음엔 입출력 예시만 고려한 채로 아래와 같은 코드로 풀었습니다. section 의 최댓값과 최솟값의 차에 대해서 m과 들어맞는지 확인하고 결과물을 출력하는 방식이지요. def solution(n, m, section): answer = 0 i = section[len(section)-1] - section[0] + 1 if i//m == 0: answer = 1 else: if i%m == 0: answer = i//m else: answer = i//m+1 return answer 하지만 채점 결과 정확성이 반밖에 되지 않더군요. 예외케이스가 ..
오늘도 오랑이는 문제를 풉니다. 소수 만들기 풀이 과정해당 문제는 크게 두 파트로 나눠서 풀어야 합니다.nums 의 값 3개씩 조합소수 판별첫번째 조건에 대한 코드를 짜봅니다.def solution(nums): for i in range(len(nums)): for j in range(i+1,len(nums)): for k in range(j+1,len(nums)): num = nums[i] + nums[j] + nums[k] 예전에 풀었던 삼총사 문제와 동일한 방식입니다. 어떤 수 n이 소수가 되려면 인수가 1과 자기 자신 n 뿐이어야 합니다. 또한 0 과 1 은 소수가 될 수 없습니다. 즉, n 은 2 이상의 숫자가 되며 그 인수..
오늘도 오랑이는 문제를 풉니다. 모의고사 풀이 과정각 수포자의 답이 answers 리스트와 일치하는지 비교일치할 경우 리스트 형태로 각각 점수 부여부여된 점수 중 최고값에 해당하는 인덱스값 + 1 을 리스트로 반환 위 조건에 따라 코드를 설계해봅시다.우선 전체 점수와 각 수포자의 답을 리스트 형태로 저장해줍니다. def solution(answers): answer = [] score = [0,0,0] g1 = [1,2,3,4,5] g2 = [2,1,2,3,2,4,2,5] g3 = [3,3,1,1,2,2,4,4,5,5] 이제 조건을 나열해봅시다. 각 수포자에 대해 answers[ i ] 와 g[ i % 리스트 길이] 를 비교해줍니다. 나머지값으로 answers 길이가..
오늘도 오랑이는 문제를 풉니다. 과일 장수 풀이 과정score 를 순서대로 나열개수 m 씩 쪼개고 그 중 최솟값에 대해 더해서 m 을 곱한 값을 리턴위의 순서대로 진행하는 코드를 생각했습니다. 차례대로 코드를 짜봅시다. def solution(k, m, score): score.sort(reverse=True) return score #순서 확인 설명을 위한 편의 상 answer 를 리스트로 지정해서 리스트에 반복문의 결과물이 적재되는 과정이 보이도록 수정했습니다. def solution(k, m, score): answer = [] score.sort(reverse=True) for i in range(len(score)//m): answer.append(mi..
오늘도 오랑이는 문제를 풉니다. 2016년 풀이 과정필수는 아니지만 없으면 허전하기 때문에 2016년 달력을 한 번 봅시다.이 문제에서 주목해야 할 부분은 아래 두 가지입니다:날짜 % 7 = 1 은 금요일각 월의 날짜들은 이어지기 때문에 이전 월의 일수에 날짜를 더한 값 = 날짜즉, 요일과 월별 일수를 나열한 리스트 2개를 작성해주고 여기서 값을 추출해서 계산해주는 방식으로 풉니다.아까 나머지가 1일 때 금요일이기 때문에 리스트 인덱스와 맞춰서 작성해줍니다.또한 이전 달의 날짜에 b 를 더해야 하기 때문에 month 리스트는 0부터 시작하도록 해줍니다. def solution(a, b): weekday = ['THU','FRI','SAT','SUN','MON','TUE','WED'] mont..
오늘도 오랑이는 문제를 풉니다. 명예의 전당 (1) 풀이 과정우선 전당에 올라갈 값들을 따로 저장해둘 빈 리스트 temp 가 필요합니다. 이때 k 값과 무관하게 모든 score 값 i 는 temp에 저장되는 과정을 거치므로 for 문 안에 바로 넣어줍니다.문제 문맥상 temp 의 sort를 해야 하나 싶었지만 어차피 추출할 때 min 값으로 추출하면 돼서 굳이 정렬이 필요 없습니다. def solution(k, score): answer = [] temp = [] for i in score: temp.append(i) #조건 answer.append(min(temp)) return answer 이제 구체적인 조건에 대해 생각해봅시다.temp 의 길이가..
오늘도 오랑이는 문제를 풉니다. 콜라 문제풀이 과정뭐이리 길어..하는 문제지만 답변 코드는 굉장히 짧은 문제입니다.괜히 글도 길고 무슨 이미지도 있어서 복잡해보여도, n을 a로 나눈 값의 몫에 b를 곱해서 모두 더하는 간단한 풀이지요.이 과정을 반복해야 하기 때문에, 몫이 0이 되기 전까지 반복되도록 설정한 후, n도 매번 새로운 값으로 갱신되게 해야 합니다. 최종 코드def solution(a, b, n): answer = 0 while n//a != 0: answer += (n//a)*b n = (n//a)*b + n%a return answer 오랑우탄이 영어를 하고 오랑이가 코드마스터가 되는 그날까지~ 프로그래머스코드 중심의 개발자 채용. 스택 ..
오늘도 오랑이는 문제를 풉니다. 푸드 파이트 대회풀이 과정우선 1~len(food)의 숫자 i 에 대해서 food[i] 번 음식이 i 번 반복되도록 하는 패턴을 짜줍니다. food[i]을 둘로 나눈 몫만큼 i 를 문자열로 변환해서 곱해주면 됩니다.str(i)*(food[i]//2) 이후 반복문에 넣어보면 아래와 같이 우리가 원하는 패턴의 반이 리스트 형식으로 출력됩니다. 이때 이걸 뒤집은 형태의 리스트와 합쳐주면 되는데, 중간에 0을 넣고 싶은 것이지요.for i in range(1,len(food)): temp.append(str(i)*(food[i]//2)) temp += temp[::-1] temp.insert(len(temp)//2,'0') 이때 해당 부분이 for 반복..