[Programmers] Lv1. 소수 만들기 문제 바로가기 코딩테스트 연습 - 소수 만들기 주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 programmers.co.kr 풀이 primeNumber()는 에라토스테네스의 체를 이용해 소수리스트를 만드는 함수로, 에라토스테네스의 체 연습용 solution()은 combinations라이브러리를 사용해 nums에서 3개를 뽑고, 그 3개의 합이 소수리스트에 들어있으면 +1 코드 # 에라토스테네스의 체 def primeNumber(): lst, prime = [0] * 3001, [] lst[0] = lst[1] = 1 for i in range(2, .. 2021. 5. 15.
[Programmers] Lv1. 음양 더하기 문제 바로가기 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re programmers.co.kr 풀이 signs가 true면 answer에 더하고, false면 answer에서 뺀다. 코드 def solution(absolutes, signs): answer = 0 for sign in range(len(signs)): if signs[sign]: answer += absolutes[sign] else: answer -= absolutes[sign] return answer 2021. 5. 15.
[Programmers] Lv1. 로또의 최고 순위와 최저 순위 문제 바로가기 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 풀이 solution 함수는 0이 6개면 [1, 6]을 반환하고, 아니라면 lottos와 win_nums를 정렬한 후 countAnswer함수를 반환 countAnswer함수는 정렬된 리스트를 돌면서 정답의 개수를 answer_cnt로 구한다. 그리고 rankLotto 함수를 반환 rankLotto함수는 [정답 개수, 정답 개수 + 0의 개수]를 가지고 1~6등을 매기는 함수 코드 def rankLot.. 2021. 5. 14.
[Programmers] Lv1. 모의고사 문제 바로가기 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 풀이 3명의 사람이라서 people의 푸는 방식을 리스트로 만들었다 그리고 score를 미리 [0, 0, 0]으로 초기화해 answers를 돌면서 수포자의 정답과 같으면 score 해당 인덱스를 +1 (여기서, 각 수포자의 정답 길이를 가지고 % 연산을 통해 리스트를 길게 늘이지 않고 정답의 인덱스 계산 가능) 점수 중 최고점을 가지고 answer에 최고점을 가진 수포자의 번호를 추가해준다. 코드 def solution(answers): score.. 2021. 5. 14.
[Programmers] Lv1. 크레인 인형뽑기 게임 문제 바로가기 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 풀이 stack을 이용해서 풀었다 moves의 배열을 돌면서 board의 열을 moves원소의 -1로 두고, 행을 board의 길이만큼 돌면서 인형을 찾습니다 그리고 인형을 발견하면 stack에 인형을 쌓고 해당 board의 값을 0으로 만들고 break 그 후 stack의 길이가 1 이상이 되면 같은 인형이 나올 수 있으므로 while문을 stack의 길이가 1 이상일 때로 지정 stack의 마지막 원소와 뒤에서 두 번째 원소가 같은 경우, answer에 없어진 인형의 개.. 2021. 5. 14.
[Programmers] Lv1. 키패드 누르기 문제 바로가기 코딩테스트 연습 - 키패드 누르기 [1, 3, 4, 5, 8, 2, 1, 4, 5, 9, 5] "right" "LRLLLRLLRRL" [7, 0, 8, 2, 8, 3, 1, 5, 7, 6, 2] "left" "LRLLRRLLLRR" [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] "right" "LLRLLRLLRL" programmers.co.kr 풀이 lefts, mids, rights에 해당하는 keypad를 리스트로 나타냄 '*'과 '#'에 해당하는 index를 사용해서 왼손과 오른손의 위치를 초기화함 그리고 숫자 리스트를 돌면서, lefts에 들어있으면 answer에 L을 추가하고 왼손 위치를 lefts의 index를 사용해 변경 rights에 들어있으면 answer에 R을 .. 2021. 5. 13.
[Programmers] Lv1. 체육복 문제 바로가기 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 풀이 lost와 reserve 값이 공통으로 존재하는 것은 제외시켜줘야하기 때문에, set을 활용해서 차집합 구하기 반복문을 돌면서 index가 작은 것(i-1)부터 빌려주고, 만약에 i-1이 없다면 i+1의 학생을 빌려준다. 코드 def solution(n, lost, reserve): lost1 = set(lost)-set(reserve) reserve1 = set(reserve) - set(lost) for i in reserve1: if i-.. 2021. 5. 12.
[Programmers] Lv1. K번째수 문제 바로가기 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 풀이 slicing 기능을 통해 리스트를 자른 후 정렬 그리고 해당 인덱스의 숫자를 리스트에 넣어 Return 코드 def solution(array, commands): answer = [] for i in commands: tmp = sorted(array[i[0]-1:i[1]]) answer.append(tmp[i[2]-1]) return answer 2021. 5. 12.
[Programmers] Lv1. 완주하지 못한 선수 문제 바로가기 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 풀이 무조건 한 명의 선수를 제외하고 완주했으므로 각각의 리스트를 정렬 반복문을 통해 같은 이름이 아니면 그 이름을 Return 만약 반복문을 문제없이 완료했다면 마지막 선수의 이름을 Return 코드 def solution(participant, completion): participant.sort() completion.sort() for i in range(len(completion)): if participant[i] !.. 2021. 5. 12.
반응형