[프로그래머스]코딩테스트 입문 | 복습 Day7 - Day8

sun_U·2023년 6월 14일
0
post-thumbnail

프로그래머스 코딩테스트 입문

Day7. 문자열, 조건문, 수학, 반복문

25. 특정 문자 제거하기


문자열
문제
문자열 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를 사용하는 것이 더 간단했다.

26. 각도기


조건문
문제
각에서 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씩 더해준다.

27. 양꼬치


수학
문제
머쓱이네 양꼬치 가게는 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

28. 짝수의 합


반복문
문제
정수 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씩 증가하도록 만들어 합을 구할 수 있다.

Day8. 배열, 구현, 수학

29. 배열 자르기


배열
문제
정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbers의 num1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.

제출 코드

def solution(numbers, num1, num2):
    answer = numbers[num1:num2+1]
    return answer

30. 외계행성의 나이


문제
우주여행을 하던 머쓱이는 엔진 고장으로 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했다.

31. 진료순서 정하기


문제
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 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

-> 인덱스로 접근해서 풀 수도 있지만 시간 복잡도가 최적은 아니라고 한다.

32. 순서쌍의 개수


문제
순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (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
profile
Data Engineer🐣

0개의 댓글