👩🏻💻 본 포스팅은 '(이코테 2021) 이것이 취업을 위한 코딩 테스트다 with 파이썬' 교재를 공부하고 풀이하며 정리한 글입니다.
예제 4-1
import sys
n = int(sys.stdin.readline())
x,y = 1,1
dx = [0,0,-1,1]
dy = [-1,1,0,0]
move = ['L','R','U','D']
plans = sys.stdin.readline().split()
for plan in plans:
for i in range(len(move)):
if plan==move[i]:
if x + dx[i] > n or y + dy[i] > n or x + dx[i]< 1 or y + dy[i]<1:
break
nx = x + dx[i]
ny = y + dy[i]
x, y = nx, ny
print(x, " ", y)
처음에 x, y 좌표가 거꾸로 나와서 한참 찾았는데, dx dy를 거꾸로 설정해주어야 했다 ... 안일하게 x, y 좌표라고 생각했다가 헤매게 되었음
예제 4-2 / 백준 18312
import sys
n = sys.stdin.readline()
count = 0
for i in range (int(n)+1): #시간별로 카운트
for j in range (60):
for k in range (60):
if '3' in str(i) + str(j) + str(k):
count += 1
print(count)
모범답안에서는 가장 하위 for문에서 str(i), str(j), str(k)를 한번에 검사한다. k가 증가할 때마다 검사해야 하므로 두번째 코드처럼 해야 올바른 답을 도출할 수 있다.
import sys
n,p = map(int, sys.stdin.readline().split())
count = 0
for i in range (n+1): #시간별로 카운트
if i< 10 : i = '0' + str(i)
for j in range (60):
if j<10 : j = '0' + str(j)
for k in range (60):
if k<10 : k = '0' + str(k)
if str(p) in str(k)+str(i)+str(j):
count+=1
print(count)
백준의 문제에서는 count하는 정수 k를 따로 입력받아야 하는데, 따라서 n과 p를 int로 받기 위해 map 함수를 사용하였다.
0<=k라는 조건이 또 주어지기 때문에 -> i, j, k에서 한자리 수일 경우 0을 카운트하도록 해야 한다.
따라서 각 for문 마다 0을 카운트하는 경우를 고려하여 앞에 '0' 문자열을 추가하였다.
'알고리즘' 카테고리의 다른 글
[백준] 🏅11559번 골드4 Puyo Puyo (파이썬 Python) (0) | 2025.02.28 |
---|---|
[자료구조] 우선순위 큐 (파이썬 heapq 사용법) (1) | 2024.06.14 |
[프로그래머스] lv3. 순위 (파이썬 Python) (1) | 2024.05.30 |
[백준] 🥈10816번 숫자 카드2 (0) | 2024.05.12 |
[백준] 🏅1107번 리모콘(파이썬 Python) (2) | 2024.04.18 |