Skip to content
CatBus

Tag: divide and conquer

All the articles with the tag "divide and conquer".

BOJ1074SILVER 1
...
		num = 2 ** (N - 1)
		# 좌상단
    if x <= num and y <= num:
        position(N-1, x, y, base)
        
		# 우상단
    elif x > num and y <= num:
        position(N-1, x - num, y, 4 ** (N - 1) + base)
    
		# 좌하단
    elif x <= num and y > num:
        position(N-1, x, y - num, 2 * 4 ** (N - 1) + base)
        
		# 우하단
    elif x > num and y > num:
        position(N-1, x - num, y - num, 3 * 4 ** (N - 1) + base)

풀이 설명 그림

위와 같이 한 변이 2n2^n인 영역이 주어졌을 때 각 변을 직각 이등분 하는 선은 가장 좌상단의 꼭짓점에서 2n/2(=2n−1)2^n/2(=2^{n-1}) 만큼 떨어져 있는 것을 확인할 수 있다. 그러므로 x, y가 2n−12^{n-1}보다 큰지 작은지 확인하면 네 개의 영역 중 어디에 속해있는지 알 수 있다. 단 여기서 x는 커질수록 오른쪽, y는 커질수록 아래로 진행한다고 생각해야 한다.

Z

백준 1074번 'Z' (실버 1) 문제 풀이. divide and conquer, recursion 로 접근했다.

2022.03.10·5분·divide and conquer