[Programmers/Lv. 0] 코딩테스트 입문 Day 7 - 문자열, 조건문, 수학, 반복문 (Python)

2023. 3. 15. 19:10Algorithm

1. 특정 문자 제거하기


문자열과 문자가 주어질 때, 주어진 문자를 제거한 문자열을 반환하라는 문제이다.

 

(내가 생각한 풀이 과정)

문자열을 변경하는 replace 함수가 생각났다. 사용하는 형식은 "변수.replace(바꾸고 싶은 문자, 바꿀 문자)"이다.

 

(코드)

더보기

💡 내 코드

def solution(my_string, letter):
    return my_string.replace(letter, "")

 


2. 각도기


각 angle이 매개변수로 주어질 때, 각각 예각은 1, 직각은 2, 둔각은 3, 평각은 4로 반환하라는 문제이다.

 

(내가 생각한 풀이 과정)

if문을 이용해서 각각 조건을 나눠주는 방법을 생각했다.
대신, if-else문으로 4개의 조건을 나눠주면 코드 길이가 조금 길어지는 느낌이어서 코드를 한 줄에 쓸 수 있는 조건문을 활용해서 깔끔하게 작성했다.

 

(코드)

더보기

💡 내 코드

def solution(angle):
    if angle<=90:
        return 1 if angle<90 else 2
    else:
        return 3 if angle<180 else 4

 

💡 다른 사람의 풀이 코드

항상 코딩 테스트에서 나오는 아이디어는 수식 계산 값이 그 자체의 반환값이 될 수 있는가이다.

내 코드와 같은 조건을 나눈 것이 아래 코드이다. 코드를 살펴보자.
(angle // 90)은 각도가 90이 넘는지 아닌지를 기준으로 2의 값을 줄지 말지 결정하는 코드이다.
(angle % 90 > 0)은 직각이나 평각이 되는지를 구분하는 조건이다. 만약 직각 또는 평각이 아니라면 1의 값을 줄 수 있을 것이다.
즉, 예각인 경우 = 각도 90 안됨 (0) + 직각 또는 평각이 아님 (1) = 1 반환
이런 식으로 계산 값이 함수의 반환값이 된다는 것을 알 수 있다.

def solution(angle):
    answer = (angle // 90) * 2 + (angle % 90 > 0) * 1
    return answer

 


3. 양꼬치


양꼬치 10인분에 음료수 하나를 주는 양꼬치 가게가 있다고 한다.
양꼬치는 1인분에 12,000원, 음료수는 하나에 2,000원일 때, 양꼬치 n인분과 음료수 k개를 먹었다면 얼마를 지불해야 하는지 구하라는 문제이다.

 

(내가 생각한 풀이 과정)

직관적으로 생각했다.
우선, 양꼬치 값은 n인분당 12,000원씩 곱해주면 되고,
음료수는 k개당 2,000원이지만, 양꼬치 10인분당 하나씩 서비스이므로, 양꼬치 값에서 10을 나누어진 값을 k개에서 빼주면 음료수의 가격도 정확하게 구할 수 있을 것이다. 

 

(코드)

더보기

💡 내 코드

def solution(n, k):
    return n*12000+(k-n//10)*2000

 


4. 짝수의 합


주어지는 정수 n 이하의 짝수를 모두 더한 값을 반환하라는 문제이다.

 

(내가 생각한 풀이 과정)

합산을 해주는 sum 함수와 리스트 컴프리헨션을 사용해서 작성했다.
range 함수를 사용해서 1부터 n까지 반복을 시키고, 그 반복값이 조건문을 통해 짝수인지 판단해줘야 한다.

 

(코드)

더보기

💡 내 코드

def solution(n):
    return sum([i for i in range(n+1) if i%2==0])

 

💡 다른 사람의 풀이 코드

반복값의 시작을 2(짝수)로 잡아두고, range 함수의 세 번째 인수값이 의미하는 것은 step(간격)이었으니 짝수에서 2 간격으로 반복을 시켜주면, 계속 짝수값만 반복시킬 수 있었을 것이다. 

def solution(n):
    return sum([i for i in range(2, n + 1, 2)])