프로그래머스 코딩테스트 입문
문자열
문제
문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.
제출 코드
def solution(my_string, letter):
answer = ''.join([i for i in my_string if i != letter])
return answer
다른 풀이
def solution(my_string, letter):
answer = my_string.replace(letter,'')
return answer
처음에 제출했을 때는 컴프리헨션을 사용해 반복문으로 제출했었다.
다시 보니 굳이 그러지 않고 replace를 사용하는 것이 더 간단했다.
조건문
문제
각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.
예각 : 0 < angle < 90
직각 : angle = 90
둔각 : 90 < angle < 180
평각 : angle = 180
제출 코드
def solution(angle):
if angle < 90:
answer = 1
elif angle == 90:
answer = 2
elif angle < 180:
answer = 3
elif angle == 180:
answer = 4
return answer
조건문을 사용한 풀이
다른 풀이
def solution(angle):
answer = (angle // 90) * 2 + (angle % 90 > 0) * 1
return answer
사칙연산으로도 풀 수 있을 것 같았는데 방법이 떠오르지 않아 다른 사람의 풀이를 봤더니 방법이 있었다.
angle을 90으로 나눈 몫에 2를 곱한 후 90으로 나눴을 때 나머지가 생기는 경우에만 1씩 더해준다.
수학
문제
머쓱이네 양꼬치 가게는 10인분을 먹으면 음료수 하나를 서비스로 줍니다. 양꼬치는 1인분에 12,000원, 음료수는 2,000원입니다. 정수 n과 k가 매개변수로 주어졌을 때, 양꼬치 n인분과 음료수 k개를 먹었다면 총얼마를 지불해야 하는지 return 하도록 solution 함수를 완성해보세요.
제출 코드
def solution(n, k):
answer = (n * 12000) + (k * 2000) - (n // 10 * 2000)
return answer
반복문
문제
정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.
제출 코드
def solution(n):
answer = 0
for i in range(1, n+1):
if i % 2 == 0:
answer += i
return answer
-> 처음에 제출한 코드
다른 풀이
def solution(n):
answer = 0
for i in range(2, n+1,2):
answer += i
return answer
-> 2로 나눈 나머지로 짝수를 판단하지 않고, range()
의 step을 이용해 시작값을 2부터 시작해 2씩 증가하도록 만들어 합을 구할 수 있다.
배열
문제
정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.
제출 코드
def solution(numbers, num1, num2):
answer = numbers[num1:num2+1]
return answer
문제
우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.
제출 코드
def solution(age):
al_age = ['a','b','c','d','e','f','g','h','i','j']
answer = ''.join([al_age[int(i)] for i in str(age)] )
return answer
-> 알파벳 리스트를 만들고 인덱스 값으로 접근해 join
했다.
문제
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
제출 코드
def solution(emergency):
dic = {k:v+1 for v, k in enumerate(sorted(emergency, reverse = True))}
answer = [dic[i] for i in emergency]
return answer
-> 인덱스로 접근해서 풀 수도 있지만 시간 복잡도가 최적은 아니라고 한다.
문제
순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.
제출 코드
def solution(n):
answer = 0
for i in range(1,n+1):
if n % i == 0:
answer += 1
return answer