공부 기록
Level 1도 풀어보기 본문
1. 두 수의 연산값 비교하기
양의 정수 a와 b가 주어졌을 때, a ⊕ b와 2 * a * b 중 더 큰 값을 return하는 solution 함수를 완성(1 ≤ a, b < 10,000)
def solution(a, b):
answer = max(int(str(a)+str(b)), 2*a*b) #여기 수정
return answer
2. [PCCP 기출문제] 1번 / 동영상 재생기
- 0초 전으로 이동: 사용자가 "prev" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 전으로 이동합니다. 현재 위치가 10초 미만인 경우 영상의 처음 위치로 이동합니다. 영상의 처음 위치는 0분 0초입니다.
- 10초 후로 이동: 사용자가 "next" 명령을 입력할 경우 동영상의 재생 위치를 현재 위치에서 10초 후로 이동합니다. 동영상의 남은 시간이 10초 미만일 경우 영상의 마지막 위치로 이동합니다. 영상의 마지막 위치는 동영상의 길이와 같습니다.
- 오프닝 건너뛰기: 현재 재생 위치가 오프닝 구간(op_start ≤ 현재 재생 위치 ≤ op_end)인 경우 자동으로 오프닝이 끝나는 위치로 이동합니다.
동영상의 길이를 나타내는 문자열 video_len, 기능이 수행되기 직전의 재생위치를 나타내는 문자열 pos, 오프닝 시작 시각을 나타내는 문자열 op_start, 오프닝이 끝나는 시각을 나타내는 문자열 op_end, 사용자의 입력을 나타내는 1차원 문자열 배열 commands가 매개변수로 주어집니다. 이때 사용자의 입력이 모두 끝난 후 동영상의 위치를 "mm:ss" 형식으로 return 하도록 solution 함수를 완성
def solution(video_len: str, pos: str, op_start: str, op_end: str, commands: list) -> str:
def time_to_seconds(time_str):
minutes, seconds = map(int, time_str.split(":"))
return minutes * 60 + seconds
def seconds_to_time(seconds):
minutes = seconds // 60
seconds = seconds % 60
return f"{minutes:02}:{seconds:02}"
video_length = time_to_seconds(video_len)
position = time_to_seconds(pos)
op_start_sec = time_to_seconds(op_start)
op_end_sec = time_to_seconds(op_end)
for command in commands:
if op_start_sec <= position <= op_end_sec:
position = op_end_sec
if command == "prev":
position = max(0, position - 10)
elif command == "next":
position = min(video_length, position + 10)
if op_start_sec <= position <= op_end_sec:
position = op_end_sec
return seconds_to_time(position)
-> 초로 변환할 생각을 못했음. 걍 분에서 놀다가 런타임 오버된 것이 많아 chatgpt 선생님의 도움을 받음
3. [PCCE 기출문제] 9번 / 지폐 접기
- 지폐를 접을 때는 항상 길이가 긴 쪽을 반으로 접습니다.
- 접기 전 길이가 홀수였다면 접은 후 소수점 이하는 버립니다.
- 접힌 지폐를 그대로 또는 90도 돌려서 지갑에 넣을 수 있다면 그만 접습니다.
지갑의 가로, 세로 크기를 담은 정수 리스트 wallet과 지폐의 가로, 세로 크기를 담은 정수 리스트 bill가 주어질 때, 지갑에 넣기 위해서 지폐를 최소 몇 번 접어야 하는지 return하도록 solution함수를 완성
def solution(wallet, bill):
answer = 0
cnt = 1
while cnt:
if ((wallet[0] >= bill[0])&(wallet[1] >= bill[1]))|((wallet[0] >= bill[1])&(wallet[1] >= bill[0])):
cnt = 0
else:
bill[bill.index(max(bill))] = bill[bill.index(max(bill))] // 2
answer += 1
return answer
'다양한 분야 공부 기록 > Python Coding Test' 카테고리의 다른 글
Level 1 풀기 (0) | 2025.02.01 |
---|---|
Level 1 위주로 풀어보기 (0) | 2025.01.30 |
코테 연습기 (0) | 2025.01.28 |
다시 코테 준비하기 (0) | 2025.01.27 |
[Python] 퇴근 후 5문제만 풀어보기 (0) | 2024.12.31 |