1. 코딩테스트 연습 - 문자열 겹쳐쓰기 | 프로그래머스 스쿨 (programmers.co.kr)
2. 코딩테스트 연습 - 그림 확대 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
직사각형 형태의 그림 파일이 있고, 이 그림 파일은 1 × 1 크기의 정사각형 크기의 픽셀로 이루어져 있습니다. 이 그림 파일을 나타낸 문자열 배열 picture과 정수 k가 매개변수로 주어질 때, 이 그림 파일을 가로 세로로 k배 늘린 그림 파일을 나타내도록 문자열 배열을 return 하는 solution 함수를 작성해 주세요.
나의 풀이 (오답)
def solution(picture, k):
result=[]
answer=[]
for i in picture:
string=""
for j in i:
string+=j*k
result.append(string)
for j in result:
for i in range(k):
answer.append(j)
return answer
모범 답안
def solution(picture, k):
result = []
for p in picture:
s = ''
for a in p:
s += a * k
for i in range(k):
result.append(s)
return result
3. 코딩테스트 연습 - [PCCE 기출문제] 7번 / 가습기 | 프로그래머스 스쿨 (programmers.co.kr)
4. 코딩테스트 연습 - [PCCE 기출문제] 6번 / 가채점 | 프로그래머스 스쿨 (programmers.co.kr)
5. 코딩테스트 연습 - 대소문자 바꿔서 출력하기 | 프로그래머스 스쿨 (programmers.co.kr)
6. 코딩테스트 연습 - 전국 대회 선발 고사 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
0번부터 n - 1번까지 n명의 학생 중 3명을 선발하는 전국 대회 선발 고사를 보았습니다. 등수가 높은 3명을 선발해야 하지만, 개인 사정으로 전국 대회에 참여하지 못하는 학생들이 있어 참여가 가능한 학생 중 등수가 높은 3명을 선발하기로 했습니다.
각 학생들의 선발 고사 등수를 담은 정수 배열 rank와 전국 대회 참여 가능 여부가 담긴 boolean 배열 attendance가 매개변수로 주어집니다. 전국 대회에 선발된 학생 번호들을 등수가 높은 순서대로 각각 a, b, c번이라고 할 때 10000 × a + 100 × b + c를 return 하는 solution 함수를 작성해 주세요.
나의 풀이
def solution(rank, attendance):
result=[]
answer=[]
for i in zip(rank, attendance):
if i[1]==True:
result.append(i[0])
result.sort()
result=result[:3]
for i in result:
answer.append(rank.index(i))
return (10000*answer[0])+(100*answer[1])+answer[2]
모범 답안
def solution(rank, attendance):
arr = sorted([(x, i) for i, x in enumerate(rank) if attendance[i]])
return arr[0][1] * 10000 + arr[1][1] * 100 + arr[2][1]
7. 코딩테스트 연습 - 문자열 밀기 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
나의 풀이
리스트로 접근 - > 실패
모범 답안
def solution(A, B):
answer = -1
## 처음부터 A와 B가 같으면
if A==B:
return 0
for i in range(1, len(A)) :
## A를 오른쪽으로 한 칸씩 밀었을때
A = A[-1]+A[0:-1]
print(A)
if A == B:
return i
return answer
8. 코딩테스트 연습 - 유한소수 판별하기 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
소수점 아래 숫자가 계속되지 않고 유한개인 소수를 유한소수라고 합니다. 분수를 소수로 고칠 때 유한소수로 나타낼 수 있는 분수인지 판별하려고 합니다. 유한소수가 되기 위한 분수의 조건은 다음과 같습니다.
- 기약분수로 나타내었을 때, 분모의 소인수가 2와 5만 존재해야 합니다.
두 정수 a와 b가 매개변수로 주어질 때, a/b가 유한소수이면 1을, 무한소수라면 2를 return하도록 solution 함수를 완성해주세요.
나의 풀이
.
모범 답안
from math import gcd
def solution(a, b):
b //= gcd(a,b)
while b%2==0:
b//=2
while b%5==0:
b//=5
return 1 if b==1 else 2
gcd() : 최대공약수를 반환함
def solution(a, b):
answer = 0
for i in range(2, min([a, b]) + 1):
while a % i == 0 and b % i == 0:
a = a // i
b = b // i
while b % 2 == 0:
b = b // 2
while b % 5 == 0:
b = b // 5
if b == 1:
answer = 1
else:
answer = 2
return answer
9. 코딩테스트 연습 - 저주의 숫자 3 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
3x 마을 사람들은 3을 저주의 숫자라고 생각하기 때문에 3의 배수와 숫자 3을 사용하지 않습니다. 3x 마을 사람들의 숫자는 다음과 같습니다.
나의 풀이 (오답)
def solution(n):
num=0
for i in range(n):
num+=1
if "3" in str(num) or num%3==0:
num+=1
return num
모범 답안
def solution(n):
num=0
for i in range(n):
num+=1
while "3" in str(num) or num%3==0:
num+=1
return num
10. 코딩테스트 연습 - 배열 만들기 2 | 프로그래머스 스쿨 (programmers.co.kr)
문제 설명
정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.
나의 풀이
.
모범 답안
def solution(l, r):
answer = []
for num in range(l, r+1):
if not set(str(num)) - set(['0', '5']):
answer.append(num)
return answer if answer else [-1]
'코딩테스트 > programmers (python)' 카테고리의 다른 글
20240111/ programmers/ 0단계/ python (1) | 2024.01.11 |
---|---|
20240110/ programmers/ 0단계/ python (0) | 2024.01.10 |
20240108/ programmers/ 0단계/ python (0) | 2024.01.08 |
20240107/ programmers/ 0단계/ python (1) | 2024.01.08 |
int형 list에 .join()사용 시 에러 (0) | 2024.01.06 |