공부 기록

[Python] 코딩테스트 준비하기 (하루 10문제) 본문

다양한 분야 공부 기록/Python Coding Test

[Python] 코딩테스트 준비하기 (하루 10문제)

kstar2 2024. 12. 29. 17:52

프로그래머스의 코딩테스트 문제를 풀어보며

까먹었던 부분들과 미흡한 부분 향상을 위함

 

Lv.0 Python3

[PCCE 기출문제] 1번 / 문자 출력

Q. 아래와 같이 출력되도록 코드를 완성하여함. 단, 빈칸을 제외한 기본 코드는 수정할 수 없음

message = 'Let's go!'

print("3\n2\n1")
print(message

해당 문제는 '\n'과 같은 특수 문자를 아는지 확인하기 위한 목적으로 제출된 문제로 생각됨

문자 설명
\n 출력에서 줄바꿈
\t 출력에서  tab 간격으로 띄어쓰기
\\ print시 출력에 백슬래시(\)이 출력되도록함
\' print시 출력에 '(작은따옴표)가 출력되도록함
\" print시 출력에 "(큰따옴표)가 출력되도록함

 

[PCCE 기출문제] 2번 / 각도 합치기

Q. 0<= angle1 <= 5000 과 0<= angle2 <= 5000 라는 두 변수의 합을 0-360도 사이의 값으로 출력할것

#1줄만 수정하여야함
angle1 = int(input())
angle2 = int(input())

sum_angle = angle1 + angle2
print(sum_angle % 360)

해당 문제는 연산자를 아는지 확인하기 위한 목적으로 제출된 문제로 추정됨

연산자 기호 예시 결과
덧셈 + 3+4 7
뺄셈 - 3-1 2
나눗셈(목) // 3//2 1
나눗셈 / 3/2 1,5
나머지 % 3%2 1
곱셈 * 3*4 12
거듭제곱 ** 3**2 9

이 외 연산자는 아래 링크 참고

https://m.post.naver.com/viewer/postView.naver?volumeNo=33231827&memberNo=1085064

 

[Python] 파이썬 코딩 5일차(파이썬 기초 연산자 뿌시기 + 주요 연산자 표)

[BY 영진닷컴] 식의 구조를 안다Python에서는 여러 처리를 「계산」해서 하는 경우가 있습니다. 이 포스팅...

m.post.naver.com

 

[PCCE 기출문제] 3번 / 수 나누기

Q. 2자리 이상의 정수 number의 2자리씩 자른 뒤, 자른 수를 모두 더해서 그 합을 구하는 코드

#1줄만 수정 가능
number = int(input())

answer = 0

for i in range(len(str(number))//2 +1): #기존에는 for i in range(1)
  answer += number % 100
  number //= 100
    
print(answer)

number의 길이를 str로 구해서 2자리씩 자르고 12345와 같이 길이가 홀수 인 경우 누락되는 값이 없도록 +1을 해줬지만

다른사람 풀이를 봤을때

while number > 0: 과 같이 계산량도 적고 간단한 방법이 있는걸 보면

python의 반복문에 대한 지식 확인을 위한 문제였을 가능성이 있다

while문과 for문에 관한 설명은 아래 링크 참고

https://velog.io/@chappi/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9D%84-%EB%B0%B0%EC%9B%8C%EB%B3%B4%EC%9E%90-9%EC%9D%BC%EC%B0%A8-%EB%B0%98%EB%B3%B5%EB%AC%B8while-for

 

파이썬을 배워보자 9일차 - 반복문(while, for)

점프 투 파이썬 : https://wikidocs.net/book/1파이썬 기본을 갈고 닦자 : https://wikidocs.net/16031보통 대부분의 언어가 반복문으로 for, while이 있다. (go는 for문만 있다) 파이썬 역시도 for

velog.io

 

[PCCE 기출문제] 4번 / 병과분류

Q. 마지막 네 글자가 특정 조건에 따라 출력하도록 빈칸 채우기

code = input()
last_four_words = code[-4:]

if last_four_words == "_eye":
    print("Ophthalmologyc")
elif last_four_words == "head":
    print("Neurosurgery")
elif last_four_words == "infl":
    print("Orthopedics")
elif last_four_words == "skin":
    print("Dermatology")
else:
    print("direct recommendation")

if문과 관련된 python이 가능한지 확인하는 문제

 

[PCCE 기출문제] 5번 / 심폐소생술

Q. 문자열들이 무작위 순서로 담긴 리스트 cpr가 가각 어느 순서로 수행해야지 출력하도록 빈칸채우기

def solution(cpr):
    answer = []
    basic_order = ["check", "call", "pressure", "respiration", "repeat"]
    for action in cpr:
        for i in range(len(basic_order)):
            if action == basic_order[i]:
                answer.append(i+1)
    return answer

for 문에서 'range'의 사용과 'in 리스트형 변수'의 동작 방식을 아는지 확인하기 위한 문제로 추정

 

[PCCE 기출문제] 6번 / 물 부족

Q.  물의 양을 나타내는 정수 storage와 지난 달 물 사용량을 나타내는 정수 usage, 월별 물 사용량이 전 달 대비 어떻게 변하는지 저장된 정수 리스트 change가 주어질 때 몇 달 뒤 물이 부족해지는지 return 가뭄이 끝날때 까지 저수지의 물이 남아 있다면 -1을 return

def solution(storage, usage, change):
    total_usage = 0
    for i in range(len(change)):
        usage = usage + usage * change[i]/100 # usage = total_usage * change[i]/100
        total_usage += usage
        if total_usage > storage:
            return i
    
    return -1

 

[PCCE 기출문제] 6번 / 물 부족

Q.  다음 출력이 이뤄지도록 빈칸 채우기

string_msg = "Spring is beginning" #string_msg = 빈칸

int_val = 3 # int_val = 빈칸

string_val = "3" # string_val = 빈칸


print(string_msg)
print(int_val + 10)
print(string_val + "10")

숫자간 덧셈, 문자간 뎃셈 같은 동작 원리를 아는지 확인

 

[PCCE 기출문제] 2번 / 피타고라스의 정리

Q.  직각삼각형의 한 변의 길이를 나타내는 정수 a와 빗변의 길이를 나타내는 정수 c가 주어질 때, 다른 한 변의 길이의 제곱, b_square 을 출력하도록 한 줄을 수정해 코드를 완성

#1줄만 수정
a = int(input())
c = int(input())

b_square = c**2 - a**2 #b_square = c - a
print(b_square)

python 연산자 아는지 확인하는 문제

 

[PCCE 기출문제] 8번 / 닉네임 규칙

Q. 주어진 조건을 만족하여 입력된 nickname에 대해 처리해서 출력하도록 코드 수정

def solution(nickname):
    answer = ""
    for letter in nickname:
        if letter == "l":
            answer += "I"
        elif letter == "w":
            answer += "vv"
        elif letter == "W":
            answer += "VV"
        elif letter == "O":
            answer += "0"
        else:
            answer += letter
    while len(answer) < 4: # if len(answer) < 3:
        answer += "o"
    if len(answer) > 8:
        answer = answer[:8]
    return answer

다른 사람 풀이를 봤을 때 if문을 수정하지 않고 아래와 같은 방법도 있었음

answer = f'{answer:o<4}'

-> 위 방식은 python 'f-string'을 사용한 방법으로 문자열 앞에 f를 붙여 출력하고 싶은 변수나 조건 같은걸 {} 안에 넣어 출력하도록함

여기서 ":"는 포맷팅 규칙으로 answer를 왼쪽 정렬해서 최소 4까지 너비까지 빈 공간을 o으로 채우라는 것

만약 여기서 <가 아니라 >였으면 오른쪽 정렬임.

즉, {변수명:채울문자 정렬방식 최소 너비} 순으로 정렬 방식은 <나 > 로 나타내서 왼쪽정렬과 오른쪽 정렬을 의미하는 것

answer = answer.ljust(4, 'o')

위 방식은 ljust(n, '')의 형태로 문자열을 왼쪽으로 n만큼 정렬하고 빈칸은 ''의 문자로 채워 넣는다

유사한 방식으론 rjust(n,'')이 있으며, 이는 오론쪽 정렬을 의미한다

 

answer += 'o' *  (4 - len(answer))
answer += "o"*abs(len(answer)-4)

위 2개의 방법은 문자열 곱하기를 사용함

answer = (answer + "oooo")[:4]

4개까지만 출력하면 되는 것을 이용한 방법

 

[PCCE 기출문제] 7번 / 버스

Q. 주어진 solution함수는 버스의 좌석 개수 seat, 기점에서 출발한 버스가 순서대로 방문한 정거장에서 승객이 승/하차한 정보를 담은 2차원 문자열 리스트 passengers가 주어질 때, 버스에 남아있는 좌석의 개수를 return 하는 함수입니다. solution 함수가 올바르게 작동하도록 빈칸을 채워 solution함수를 완성

def func1(num):
    if 0 > num:
        return 0
    else:
        return num

def func2(num):
    if num > 0:
        return 0
    else:
        return num

def func3(station):
    num = 0
    for people in station:
        if people == "Off":
            num += 1
    return num

def func4(station):
    num = 0
    for people in station:
        if people == "On":
            num += 1
    return num


def solution(seat, passengers):
    num_passenger = 0
    for station in passengers:
        num_passenger += func4(station) # num_passenger += func 빈칸
        num_passenger -= func3(station) # num_passenger -= func 빈칸
    answer = func1(seat-num_passenger) #answer = func 빈칸

    return answer

def 별 다른 것들을 구분해서 적절하게 사용 가능한지를 목적으로 출제했을 것으로 추정

'다양한 분야 공부 기록 > Python Coding Test' 카테고리의 다른 글

Level 1 위주로 풀어보기  (0) 2025.01.30
Level 1도 풀어보기  (0) 2025.01.29
코테 연습기  (0) 2025.01.28
다시 코테 준비하기  (0) 2025.01.27
[Python] 퇴근 후 5문제만 풀어보기  (0) 2024.12.31