Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 토스만능문장
- 28215
- BFS
- 너비우선탐색
- 백준
- 미지의 공간탈출
- 20006
- 시뮬레이션
- 그리디알고리즘
- 수학
- 토익스피킹
- mcp사용법
- 토스독학
- mcp란
- 시계토끼제니쌤
- 토스
- 3dgs
- Python
- mcp튜토리얼
- 삼성코테기출
- 그래프
- 그리디
- 최단거리추적
- 구현
- 그래프탐색
- DP
- 20922
- 토스유튜브
- 삼성빈출
- 코테
Archives
- Today
- Total
Victory in my life
Baekjoon 1913 | 달팽이(Python) 본문
📌문제
SILVER3 / 구현
https://www.acmicpc.net/problem/1913
📌문제 분석 및 설계
이 문제는 삼성을 준비한다면 무조건 숙지해가야하는 코드! 삼성 기출을 풀어보면 알 수 있듯이 삼성이 좋아하는 구현이다, 달팽이.
해당 문제는 방향을 두번 바꿀때마다 같은 방향으로 가는 길이가 +1 되는게 핵심이다.
9 2 3
8 1 4
7 6 5 를 예시로 들어보면
(상)1→2, (우)2 →3 두가지 방향으로 직진했다면, 방향을 두번 바꿨으니 다음부터는 직진을 한번씩 더 하게되어
(하)3 →4 →5/(좌)5 →6 →7이렇게 이동한다
📌소스 코드
n = int(input())
k = int(input())
grid =[[0]*n for _ in range(n)]
dx,dy=[-1,0,1,0],[0,1,0,-1] #상 우 하 좌
cnt=1 #grid 채워넣는 값
i,j=n//2,n//2 #시작 위치
grid[i][j]=cnt #시작 위치에 1삽입
d=0 #방향 인덱스
twice=0 #2가 되면 loop+1(방향을 두번 바꿨을때마다 동일한 방향으로 나아가는 길이가 +1됨)
loop=1 #같은 방향으로 이동하는 거리
answeri,answerj=(n//2)+1,(n//2)+1 #k==1일때로 초기화
end=True
while end:
for _ in range(loop):
ni,nj=i+dx[d],j+dy[d]
if ni<0 or nj<0:
end=False
break
cnt+=1
grid[ni][nj]=cnt
i,j=ni,nj
if cnt==k:
answeri,answerj=i+1,j+1
d=(d+1)%4
twice+=1
if twice==2:
loop+=1
twice=0
for row in grid:
for a in row:
print(a, end=' ')
print()
print(answeri, answerj)
'CodingTest > Baekjoon' 카테고리의 다른 글
Baekjoon 1138 | 한 줄로 서기(Python) (0) | 2025.02.25 |
---|---|
Baekjoon 20006 | 랭킹전 대기열(Python) (0) | 2025.02.24 |
Baekjoon 14916 | 거스름돈 (Python) (0) | 2025.02.19 |
Baekjoon 14929 | 귀찮아 (SIB)(Python) (0) | 2025.02.19 |
Baekjoon 2853 | NBA 농구 (Python) (0) | 2025.02.19 |