[Baekjoon] - 1074. Z(S1)

์˜ค๋™ํ›ˆยท2022๋…„ 1์›” 19์ผ
0

Baekjoon

๋ชฉ๋ก ๋ณด๊ธฐ
24/58
post-thumbnail

1. Problem ๐Ÿ“ƒ

๐Ÿ“š ์ถœ์ฒ˜ - 1074 - Z

๋ฌธ์ œ ์„ค๋ช…
ํ•œ์ˆ˜๋Š” ํฌ๊ธฐ๊ฐ€ 2N ร— 2N์ธ 2์ฐจ์› ๋ฐฐ์—ด์„ Z๋ชจ์–‘์œผ๋กœ ํƒ์ƒ‰ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 2ร—2๋ฐฐ์—ด์„ ์™ผ์ชฝ ์œ„์นธ, ์˜ค๋ฅธ์ชฝ ์œ„์นธ, ์™ผ์ชฝ ์•„๋ž˜์นธ, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜์นธ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฉ๋ฌธํ•˜๋ฉด Z๋ชจ์–‘์ด๋‹ค.

N > 1์ธ ๊ฒฝ์šฐ, ๋ฐฐ์—ด์„ ํฌ๊ธฐ๊ฐ€ 2N-1 ร— 2N-1๋กœ 4๋“ฑ๋ถ„ ํ•œ ํ›„์— ์žฌ๊ท€์ ์œผ๋กœ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฉ๋ฌธํ•œ๋‹ค.

๋‹ค์Œ ์˜ˆ๋Š” 22 ร— 22 ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ๋ฐฉ๋ฌธํ•œ ์ˆœ์„œ์ด๋‹ค.

N์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, rํ–‰ c์—ด์„ ๋ช‡ ๋ฒˆ์งธ๋กœ ๋ฐฉ๋ฌธํ•˜๋Š”์ง€ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

๋‹ค์Œ์€ N=3์ผ ๋•Œ์˜ ์˜ˆ์ด๋‹ค.

์ž…๋ ฅ
์ฒซ์งธ ์ค„์— ์ •์ˆ˜ N, r, c๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ
rํ–‰ c์—ด์„ ๋ช‡ ๋ฒˆ์งธ๋กœ ๋ฐฉ๋ฌธํ–ˆ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

์ œํ•œ

  • 1 โ‰ค N โ‰ค 15
  • 0 โ‰ค r, c < 2N
    0
    ์ž…์ถœ๋ ฅ ์˜ˆ
์˜ˆ์ œ ์ž…๋ ฅ์˜ˆ์ œ ์ถœ๋ ฅ
2 3 111
3 7 763
1 0 00
4 7 763
10 511 511262143
10 512 512786432

2. Logic ๐Ÿ‘จโ€๐Ÿซ

์˜ˆ๋ฅผ ๋“ค์–ด, N=3, r=7, c=7๋ฅผ ์ž…๋ ฅ ๋ฐ›์•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด ๋‹ต์œผ๋กœ ๋„์ถœ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฐ’์€ 63์ด๋‹ค. ์ด ๊ณผ์ •์„ ํ•œ๋ฒˆ ์‚ดํŽด๋ด๋ณด์ž.

๋จผ์ € ์ด๋ ‡๊ฒŒ 4๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๋ถ„ํ• ํ–ˆ์„ ๋•Œ ๊ทœ์น™์„ ์‚ดํŽด๋ณด๋ฉด
์ฒ˜์Œ (7, 7)์€ N=3์ธ ์˜์—ญ์—์„œ ์ œ4์‚ฌ๋ถ„๋ฉด์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.
(๊ฐ€๋กœ ์ขŒํ‘œ 7 >= 2์˜ 2์Šน, ์„ธ๋กœ ์ขŒํ‘œ 7 >= 2์˜ 2์Šน์ด๋ฏ€๋กœ ์ œ4์‚ฌ๋ถ„๋ฉด)

  • ์ œ1์‚ฌ๋ถ„๋ฉด์€ 0๋ถ€ํ„ฐ ์‹œ์ž‘
  • ์ œ2์‚ฌ๋ถ„๋ฉด์€ 16
  • ์ œ3์‚ฌ๋ถ„๋ฉด์€ 32
  • ์ œ4์‚ฌ๋ถ„๋ฉด์€ 48๋ถ€ํ„ฐ ์‹œ์ž‘

๋‘ ๋ฒˆ์งธ๋กœ ์ชผ๊ฐฐ์„๋•Œ๋Š” (7, 7)์˜ ์ขŒํ‘œ๋Š” (3, 3)์ด ๋ฉ๋‹ˆ๋‹ค.
(๊ฐ€๋กœ ์„ธ๋กœ๊ฐ€ ๊ฐ๊ฐ ๋„ค์นธ์”ฉ ์ค„์–ด๋“œ๋‹ˆ๊น, 7 - 2์˜ 2์Šน = 3)

๋˜ํ•œ (3, 3)์€ N = 2์ธ ์˜์—ญ์—์„œ ์ œ4์‚ฌ๋ถ„๋ฉด์— ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.
(3 >= 2์˜ 1์Šน, 3 >= 2์˜ 1์Šน์ด๋ฏ€๋กœ ์ œ 4์‚ฌ๋ถ„๋ฉด)

48์„ ๋บ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค๋ฉด, ์ œ4 ์‚ฌ๋ถ„๋ฉด์€ 12๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์„ธ ๋ฒˆ์งธ๋กœ ์ชผ๊ฐœ๋ฉด (3, 3)์˜ ์ขŒํ‘œ๋Š” (1, 1)๋กœ, ์ œ 4์‚ฌ๋ถ„๋ฉด์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
(๊ฐ€๋กœ ์„ธ๋กœ ๋‘ ์นธ์”ฉ ์ค„์–ด๋“œ๋‹ˆ๊น, 3 - 2์˜1์Šน = 1)

์ œ 4์‚ฌ๋ถ„๋ฉด์ธ (1, 1)์€ 3์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ 48 + 12 + 3์€ 63์ž…๋‹ˆ๋‹ค.

3. Code ๐Ÿ’ป

1. ์ฐธ๊ณ ํ•ด์„œ ์ดํ•ดํ•ด ํ‘ผ ์ฝ”๋“œ ๐Ÿ˜

N, r, c = map(int, input().split())
ans = 0

while N != 0:
    N -= 1
    size = 2 ** N
    if r < size and c < size: # 1์‚ฌ๋ถ„๋ฉด
        ans += (size) * (size) * 0
        
    elif r < size and c >= size: # 2์‚ฌ๋ถ„๋ฉด
        ans += (size) * (size) * 1
        c -= size

    elif r >= size and c < size: # 3์‚ฌ๋ถ„๋ฉด
        ans += (size) * (size) * 2
        r -= size

    else: # 4์‚ฌ๋ถ„๋ฉด
        ans += (size) * (size) * 3
        c -= size
        r -= size

print(ans)
profile
์‚ฝ์งˆ์˜ ๊ธฐ๋ก๋“ค๐Ÿฅ

0๊ฐœ์˜ ๋Œ“๊ธ€