1) 예산
https://programmers.co.kr/learn/courses/30/lessons/12982
코딩테스트 연습 - 예산
S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는
programmers.co.kr
def solution(d, budget):
answer = 0
for i in sorted(d):
budget -= i # budget에서 d의 작은수부터 빼줌
if budget < 0: break # 0보다 작으면 break
answer += 1
return answer
2) 최대공약수와 최소공배수
https://programmers.co.kr/learn/courses/30/lessons/12940
코딩테스트 연습 - 최대공약수와 최소공배수
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의
programmers.co.kr
- for문 사용
def solution(n, m):
answer = []
for i in range(min(n,m), 0, -1): # n,m 중 작은 수 부터 0까지 1까지 -1하면서 반복
if n % i == 0 and m % i == 0:
answer.append(i)
break
for i in range(max(n,m), (n*m)+1): # n,m 중 큰 수 부터 n*m한 숫자까지 반복
if i % n == 0 and i % m == 0:
answer.append(i)
break
return answer
- math 함수 이용
3) K번째수
https://programmers.co.kr/learn/courses/30/lessons/42748
코딩테스트 연습 - K번째수
[1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3]
programmers.co.kr
def solution(array, commands):
answer = []
for i in range(len(commands)):
start = commands[i][0]-1 # i (인덱스가 아니라 순서니까 -1 해줌)
end = commands[i][1] # j
idx = commands[i][2]-1 # k (인덱스가 아니라 순서니까 -1 해줌)
temp = array[start:end]
temp.sort()
answer.append(temp[idx])
return answer
4) 나머지가 1이 되는 수 찾기
https://programmers.co.kr/learn/courses/30/lessons/87389
코딩테스트 연습 - 나머지가 1이 되는 수 찾기
자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한사항 입
programmers.co.kr
def solution(n):
for i in range(1, n+1): # n이 10일 경우 1부터 10까지
if(n % i == 1):
return i
5) 소수 찾기
https://programmers.co.kr/learn/courses/30/lessons/12921
코딩테스트 연습 - 소수 찾기
1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상
programmers.co.kr
- 1차 시도: 런타임 에러 발생 코드
def solution(n):
answer = 0
for n in range(2, n+1):
for i in range(2, n):
if n % i == 0:
break
else:
answer += 1
return answer
- 2차 시도
6) 실패율
https://programmers.co.kr/learn/courses/30/lessons/42889
코딩테스트 연습 - 실패율
실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스
programmers.co.kr
- 1차 시도
7) 체육복
https://programmers.co.kr/learn/courses/30/lessons/42862
코딩테스트 연습 - 체육복
점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번
programmers.co.kr
def solution(n, lost, reserve):
los = set(lost) - set(reserve)
res = set(reserve) - set(lost)
for i in res: # ex) i = 3
if i-1 in los:
los.remove(i-1) # ex) i-1 = 2
elif i+1 in los:
los.remove(i+1)
return n-len(los)
8) 포켓몬
https://programmers.co.kr/learn/courses/30/lessons/1845
코딩테스트 연습 - 폰켓몬
당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다.
programmers.co.kr
def solution(nums):
a = len(nums) // 2 # 고를 수 있는 횟수
b = len(set(nums)) # 포켓몬 종류
return a if b > a else b
9) 비밀지도
https://programmers.co.kr/learn/courses/30/lessons/17681
코딩테스트 연습 - [1차] 비밀지도
비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다
programmers.co.kr
- 1차 시도
10) 키패드 누르기
https://programmers.co.kr/learn/courses/30/lessons/67256
코딩테스트 연습 - 키패드 누르기
[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
- 1차 시도 (실패)
2,5,8,0 키패드를 누를 때 L과 R이 반대로 나오는 문제
def solution(numbers, hand):
answer = ''
nowLeft = 0
nowRight = 0
for i in range(len(numbers)):
if numbers[i] == 1 or numbers[i] == 4 or numbers[i] == 7:
nowLeft = numbers[i]
answer += "L"
elif numbers[i] == 3 or numbers[i] == 6 or numbers[i] == 9:
nowRight = numbers[i]
answer += "R"
else:
if nowLeft - numbers[i] > nowRight - numbers[i]:
answer += "R"
elif nowLeft - numbers[i] < nowRight - numbers[i]:
answer += "L"
else:
if hand == "right":
answer += "R"
else:
answer += "L"
return answer
- 2차 시도
11) 다트게임
https://programmers.co.kr/learn/courses/30/lessons/17682
코딩테스트 연습 - [1차] 다트 게임
programmers.co.kr
- 1차 시도 (4,5,6,7번에서 런타임 에러 발생)
문자열로 구성된 dartResult를 리스트로 만들었는데, 정수 10의 경우 1과 0으로 나뉘어 이 부분을 예외처리하는 과정에서 런타임 에러가 발생한 것 같다.
- 2차 시도 (테스트 4,5,6,7이 런타임 에러였는데, 5,6,7은 해결)
질문하기에 나와 같은 테스트 케이스의 런타임 에러가 발생하는 경우가 있어서 Parameters "10D4S10D" / return 204 추가해서 코드 실행 후 제출 했다.
- 3차 시도
12) 크레인 인형뽑기 게임
https://programmers.co.kr/learn/courses/30/lessons/64061
코딩테스트 연습 - 크레인 인형뽑기 게임
[[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
def solution(board, moves):
answer = 0
temp = []
for i in moves:
for j in range(len(board[0])): # 정사각 격자니까 board[0]의 길이로 통일
if board[j][i-1] != 0:
temp.append(board[j][i-1])
board[j][i-1] = 0 # temp에 담은 숫자는 0으로 바꿔줌
break
if len(temp) >= 2 and temp[-2] == temp[-1]: # 길이가 2 이상일 경우 / temp의 마지막 2개가 같을 경우
answer += 2
temp.pop()
temp.pop()
return answer
'Algorithm' 카테고리의 다른 글
[백준] 1541번: 잃어버린 괄호(그리디 알고리즘) - Python (0) | 2022.03.03 |
---|---|
[백준 알고리즘] 10773번: 제로(스택) - Python (0) | 2022.02.28 |
[프로그래머스] 알고리즘 난이도 중하 8문제 (Python) -3 (0) | 2022.02.12 |
[프로그래머스] 알고리즘 기초 10문제 (Python) -2 (0) | 2022.02.11 |
[프로그래머스] 알고리즘 기초 10문제 (Python) (0) | 2022.02.11 |