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
- TypeScript
- webpack
- 2156
- C언어로 쉽게 풀어쓴 자료구조
- 크롬 확장자
- X
- react
- 공부시간측정어플
- Message Passing
- Chrome Extension
- 백준 7579
- 자료구조
- supabase
- popup
- 동적계획법
- content script
- 백준 #7568번 #파이썬 #동적계획법
- 프로그래머스 #정수삼각형 #동적계획법
- 파이썬
- 갓생
- 크롬 익스텐션
- 백준
- 디스코드 봇
- 캠스터디
- background script
- discord.js
- 포도주시식
- nodejs
Archives
- Today
- Total
히치키치
[백준] 1074번 : Z - Python(파이썬) 본문
문제
https://www.acmicpc.net/problem/1074
1074번: Z
한수는 크기가 2N × 2N인 2차원 배열을 Z모양으로 탐색하려고 한다. 예를 들어, 2×2배열을 왼쪽 위칸, 오른쪽 위칸, 왼쪽 아래칸, 오른쪽 아래칸 순서대로 방문하면 Z모양이다. N > 1인 경우, 배열을
www.acmicpc.net
아이디어
1. 사분면 나누는 기준점 설정
한 변 2^N을 절반인 2로 나누기
2^N / 2 = 2^(N-1)
2. 본인 좌표 도달한 경우
더 이상 이전에 방문한 사분면이 없기 때문에 0을 반환하며 총 방문값에 더해 끝냄
3. 한 사분면에 대한 개수 * 지나온 사분면 갯수
(한 변) * (한 변) = 한 사분면 갯수
좌표가 해당하는 사분면 - 1 = 지나 온 사분면 갯수
전체코드
#https://www.acmicpc.net/problem/1074
import sys
input=sys.stdin.readline
n, r, c = map(int, input().split())
# return : 0, 1, 2, 3 (몇 사분면에 해당하는지 반환)
def quad(n, r, c):
num = 2**(n-1)
# 해당 함수는 몇사분면 위인지 확인?
if (r < num) & (c < num): # 1사분면
return 0
elif (r < num) & (c >= num): # 2사분면
return 1
elif (r >= num) & (c < num): # 3사분면
return 2
else: # 4사분면
return 3
def visit(n,r,c):
if n==1:
return quad(n,r,c)
q=quad(n,r,c)
size=2**(n-1)
visited=size*size*q
if q==0:
return visited+visit(n-1,r,c)
elif q==1:
return visited + visit(n-1,r,c-size)
elif q==2:
return visited + visit(n-1, r-size,c)
else:
return visited + visit(n-1, r-size,c-size)
print(visit(n, r, c))
'알고리즘 스터디' 카테고리의 다른 글
[백준] 3190번 : 뱀 - Python(파이썬) (0) | 2023.09.04 |
---|---|
[백준] 15686번 : 치킨배달 - Python(파이썬) (0) | 2022.10.31 |
[백준] 4179번 : 불! - Python(파이썬) (0) | 2022.06.03 |
[백준] 7579번 : 토마토 - Python(파이썬) (0) | 2022.06.02 |
[백준] 6549번 : 히스토그램에서 가장 큰 직사각형- Python(파이썬) (0) | 2021.08.24 |
Comments