1. 코딩테스트 연습 - 3진법 뒤집기 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요.
입출력 예 설명
나의 풀이
.
모범 답안
def solution(n):
answer = ''
while n > 0:
n, re = divmod(n,3) # n을 3으로 나눈 몫과 나머지
answer += str(re)
return int(answer, 3)
n=45일 때
n | re |
45 | 0 |
15 | 0 |
5 | 2 |
0 | 1 |
★ divmod() 함수
두 개의 숫자를 인자로 받아, 첫 번째 숫자를 두 번째 숫자로 나눈 몫과 나머지를 튜플(tuple) 형태로 반환
다른 풀이
def solution(n):
tmp = ''
while n:
tmp += str(n % 3)
n = n // 3
answer = int(tmp, 3)
return answer
2. 코딩테스트 연습 - 최소직사각형 | 프로그래머스 스쿨 (programmers.co.kr)
3. 코딩테스트 연습 - 시저 암호 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요.
제한 조건
- 공백은 아무리 밀어도 공백입니다.
- s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
- s의 길이는 8000이하입니다.
- n은 1 이상, 25이하인 자연수입니다.
나의 풀이
.
모범 답안
def solution(s, n):
s = list(s)
for i in range(len(s)):
if s[i].isupper():
s[i]=chr((ord(s[i])-ord('A')+ n)%26+ord('A'))
elif s[i].islower():
s[i]=chr((ord(s[i])-ord('a')+ n)%26+ord('a'))
return "".join(s)
- if문과 elif문에서 +ord('A')나 +ord('a')를 하는 이유
앞에서 %로 나머지를 구하면 0부터 25가 나오게 되는데 아스키코드의 a는 시작 값은 97 A의 시작 값은 65이기 때문에 더해줌. 값을 더해줌으로써 chr로 형변환 했을 때 알파벳이 저장되기 때문
4. 코딩테스트 연습 - 예산 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
S사에서는 각 부서에 필요한 물품을 지원해 주기 위해 부서별로 물품을 구매하는데 필요한 금액을 조사했습니다. 그러나, 전체 예산이 정해져 있기 때문에 모든 부서의 물품을 구매해 줄 수는 없습니다. 그래서 최대한 많은 부서의 물품을 구매해 줄 수 있도록 하려고 합니다.
물품을 구매해 줄 때는 각 부서가 신청한 금액만큼을 모두 지원해 줘야 합니다. 예를 들어 1,000원을 신청한 부서에는 정확히 1,000원을 지원해야 하며, 1,000원보다 적은 금액을 지원해 줄 수는 없습니다.
부서별로 신청한 금액이 들어있는 배열 d와 예산 budget이 매개변수로 주어질 때, 최대 몇 개의 부서에 물품을 지원할 수 있는지 return 하도록 solution 함수를 완성해주세요.
제한사항
- d는 부서별로 신청한 금액이 들어있는 배열이며, 길이(전체 부서의 개수)는 1 이상 100 이하입니다.
- d의 각 원소는 부서별로 신청한 금액을 나타내며, 부서별 신청 금액은 1 이상 100,000 이하의 자연수입니다.
- budget은 예산을 나타내며, 1 이상 10,000,000 이하의 자연수입니다.
나의 풀이
.
모범 답안
def solution(d, budget):
d.sort()
while budget < sum(d):
d.pop()
return len(d)
def solution(d, budget):
d.sort()
cnt = 0
for i in d :
budget -= i
if budget < 0 :
break
cnt += 1
return cnt
5. 코딩테스트 연습 - 삼총사 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다.
한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 return 하도록 solution 함수를 완성하세요.
제한사항
- 3 ≤ number의 길이 ≤ 13
- -1,000 ≤ number의 각 원소 ≤ 1,000
- 서로 다른 학생의 정수 번호가 같을 수 있습니다.
나의 풀이
.
모범 답안
def solution(number):
n=len(number)
count=0
for i in range(n):
for j in range(i+1, n):
for k in range(j+1, n):
if number[i]+number[j]+number[k]==0:
count+=1
return count
'코딩테스트 > programmers (python)' 카테고리의 다른 글
20240116/ programmers/ 1단계/ python (1) | 2024.01.16 |
---|---|
20240115/ programmers/ 1단계/ python (1) | 2024.01.15 |
20240113/ programmers/ 1단계/ python (1) | 2024.01.13 |
20240112/ programmers/ 1단계/ python/O (0) | 2024.01.12 |
20240111/ programmers/ 0단계/ python (1) | 2024.01.11 |