Problem Solving/[ํ•ญํ•ด99] TIL

99ํด๋Ÿฝ ์ฝ”ํ…Œ ์Šคํ„ฐ๋”” 17์ผ์ฐจ TIL / ๊ทธ๋ฆฌ๋””

geum 2024. 11. 13. 20:14

โœ๏ธ ๋ฌธ์ œ

[๋ฐฑ์ค€/BOJ] 31926๋ฒˆ: ๋ฐค์–‘๊ฐฑ(https://www.acmicpc.net/problem/31926)

 

๋‹ฌ๋””๋‹ฌ๊ณ , ๋‹ฌ๋””๋‹ฌ๊ณ , ๋‹ฌ๋””๋‹จ, ๋ฐค์–‘๊ฐฑ, ๋ฐค์–‘๊ฐฑ

<์žฅ๊ธฐํ•˜, ๋ฐค์–‘๊ฐฑ, 2024>

 

๋ฏผ์šฐ๋Š” ๋น„๋น„์˜ ์‹ ๊ณก <๋ฐค์–‘๊ฐฑ>์— ๊ฝ‚ํ˜€ ํ•˜๋ฃจ ์ข…์ผ "๋‹ฌ๋””๋‹ฌ๊ณ  ๋‹ฌ๋””๋‹ฌ๊ณ  ๋‹ฌ๋””๋‹ฌ๊ณ ... ๋‹ฌ๋””๋‹จ"์ด ๋จธ๋ฆฟ์†์„ ๋งด๋Œ๊ณ  ์žˆ๋‹ค.

๋ฏผ์šฐ์˜ ๋จธ๋ฆฟ์†์—์„  daldidalgo๊ฐ€ ์ด N๋ฒˆ ๋ฐ˜๋ณต๋œ ํ›„, ๋ฐ˜๋ณต์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด daldidan์œผ๋กœ ๋๋‚˜๊ฒŒ ๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋ผ๋ฉด ๋ฏผ์šฐ์˜ ๋จธ๋ฆฟ์†์—” daldidalgodaldidalgodaldidalgodaldidan์ด ์žฌ์ƒ๋œ๋‹ค.

๋ฏผ์šฐ๋Š” N์ด ์ฃผ์–ด์ง€๋ฉด ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ daldidalgodaldidalgo...daldidan์„ ์ปดํ“จํ„ฐ์— ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜๋‹ค. ๋งค์ดˆ ๋ฏผ์šฐ๋Š” ๋‘ ๊ฐœ์˜ ์ž‘์—… ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ์‹œํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  • ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž a๋ถ€ํ„ฐ z ์ค‘์—์„œ ๋ฏผ์šฐ๊ฐ€ ์›ํ•˜๋Š” ์•ŒํŒŒ๋ฒณ์„ ํ•˜๋‚˜ ๊ณจ๋ผ์„œ ์ง€๊ธˆ๊นŒ์ง€ ์ž…๋ ฅํ•œ ๋‚ด์šฉ์˜ ๋งจ ๋’ค์— ์ž…๋ ฅํ•œ๋‹ค.
  • ์ง€๊ธˆ๊นŒ์ง€ ์ž…๋ ฅํ•œ ๋ฌธ์ž์—ด์˜ ์—ฐ์†๋œ ๋ถ€๋ถ„ ๋ฌธ์ž์—ด์„ ๋ณต์‚ฌ ํ›„ ์ž…๋ ฅํ•œ ๋‚ด์šฉ์˜ ๋งจ ๋’ค์— ๋ถ™์—ฌ๋„ฃ๋Š”๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ง€๊ธˆ๊นŒ์ง€ ์ž‘์„ฑํ•œ ๋ฌธ์ž์—ด์ด ajouapcshake๋ผ๋ฉด, ajouapcshake๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜๋„, apc๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, aashake๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ์„ ์ˆ˜๋Š” ์—†๋‹ค.

 

๋ฏผ์šฐ๋Š” ๋ช‡ ์ดˆ ๋งŒ์— ๋จธ๋ฆฟ์†์— ๋– ์˜ค๋ฅธ ๊ฐ€์‚ฌ๋ฅผ ์ปดํ“จํ„ฐ์— ์ž…๋ ฅํ•  ์ˆ˜ ์žˆ์„๊นŒ?

 

๐Ÿค– ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

 

๐Ÿง ๋‚œ์ด๋„/์†Œ์š” ์‹œ๊ฐ„

โœ… ๋‚œ์ด๋„: solved.ac ๊ธฐ์ค€ S1

โœ… ์†Œ์š” ์‹œ๊ฐ„: 1์‹œ๊ฐ„ 30๋ถ„

โœ… ๊ถŒ์žฅ ์‹œ๊ฐ„: 1์‹œ๊ฐ„ 15๋ถ„

 

์‹œ๊ฐ„ ์•ˆ์— ๋ชป ํ‘ผ ๊ฒŒ ๊ต‰์žฅํžˆ ์˜ค๋žœ๋งŒ์ด๋‹ค. ์–ด ์‹ค๋ ฅ์ด ์ข€ ๋Š”๊ฑด๊ฐ€? ์‹ถ์€ ๊ฑฐ๋งŒํ•œ ์ƒ๊ฐ์ด ๋“ค๋ฝ๋ง๋ฝ ํ•  ๋•Œ ์ฏค ์‹œ๊ธฐ์ ์ ˆํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚˜์ค€ ๋ฌธ์ œ๋‹ค.

 

๐Ÿ’ก ํ’€์ด

1) ๋ฌธ์ œ ์œ ํ˜• ํŒŒ์•…

์ตœ๊ทผ ๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ๊ฐ€ ์ž์ฃผ ์ถœ์ œ๋˜๊ธฐ๋„ ํ–ˆ๊ณ  '์ตœ์†Œ' ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผ ํ•˜๋Š” ๊ฑธ ๋ณด๊ณ  ๊ทธ๋ฆฌ๋”” ์œ ํ˜•์ด๊ฒ ๋‹ค ์‹ถ์—ˆ๋‹ค.

 

์‚ฌ์‹ค ๊ทธ๋ฆฌ๋”” ์œ ํ˜•์€ ์•„์ง ์ž˜ ๋ชจ๋ฅด๊ฒ ๋‹ค. ๊ฐœ์ธ์ ์ธ ๊ฒฝํ—˜์œผ๋กœ๋Š” '๊ทธ๋ฆฌ๋”” ๋ฌธ์ œ๋‹ˆ๊นŒ ์–ด๋–ป๊ฒŒ ํ’€์–ด์•ผ์ง€'๋ผ๊ธฐ๋ณด๋‹ค '์ด๋ ‡๊ฒŒ ํ’€๋ฉด ๋  ๊ฒƒ ๊ฐ™์€๋ฐ?' ํ•˜๊ณ  ํ‘ผ ํ›„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜๋ฅผ ๋ณด๋ฉด ๊ทธ๋ฆฌ๋””๋กœ ๋ผ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•˜๋‹ค.


 

๋ฌธ์ œ์˜ ์š”๊ตฌ์‚ฌํ•ญ

- N๊ฐœ์˜ daldidalgo์™€ ํ•˜๋‚˜์˜ daldidan์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๊ฐ€์‚ฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋“œ๋Š” ์ตœ์†Œ ์‹œ๊ฐ„ ๊ตฌํ•˜๊ธฐ

 

์™œ ๊ทธ๋ฆฌ๋””์ธ์ง€? (โš ๏ธ ๊ฐœ์ธ์˜ ์ƒ๊ฐ์„ ์ •๋ฆฌํ•œ ๊ฑฐ๋ผ ์ •ํ™•ํ•˜์ง€ ์•Š์Œ)

- ๊ฑฐ์Šค๋ฆ„๋ˆ ๋ฌธ์ œ์—์„œ ๋™์ „์„ ์ตœ์†Œํ•œ์œผ๋กœ ์จ์„œ ๊ฑฐ์Šฌ๋Ÿฌ์ฃผ๋ ค๋ฉด ๊ธˆ์•ก์ด ํฐ ๋™์ „์„ ๋งŽ์ด ์จ์•ผ ํ•˜๋“ฏ์ด ์ด ๋ฌธ์ œ์—์„œ๋Š” ๊ธธ์ด๊ฐ€ ๊ธด ๊ฐ€์‚ฌ๋ฅผ ๋งŽ์ด ์จ์•ผ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ์Œ

→ ์ด ๋ถ€๋ถ„์ด ๊ทธ๋ฆฌ๋””์  ์‚ฌ๊ณ ์™€ ๊ด€๋ จ ์žˆ๋‹ค๊ณ  ํŒ๋‹จ

 

2) ์•„์ด๋””์–ด ํ๋ฆ„

โ‘  ํŒจํ„ด ์ฐพ์•„๋ณด๊ธฐ - ์ฒซ ๋ฒˆ์งธ ์‹œ๋„

๊ฐ€์žฅ ๋จผ์ € ์‹œ๋„ํ•œ ๋ฐฉ๋ฒ•์€ N=1๋ถ€ํ„ฐ N=4๊นŒ์ง€ ๊ฐ€์‚ฌ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ณผ์ •์„ ์ผ์ผ์ด ์ ์–ด๋ณด๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. ๊ทผ๋ฐ ์•„๋ฌด๋ž˜๋„ ์†์œผ๋กœ ์“ฐ๋‹ค ๋ณด๋‹ˆ ํœด๋จผ ์—๋Ÿฌ๊ฐ€ ์žˆ์–ด์„œ ์• ์ดˆ์— ์ž˜๋ชป๋œ ํŒจํ„ด์ด์—ˆ๋Š”๋ฐ ์ด ๋•Œ๋Š” ๊น”๋”ํ•˜๊ฒŒ ์ •์˜๋˜๋Š” ํŒจํ„ด์ด๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

 

๋ฌผ๋ก ? ์ œ์ถœ ๊ฒฐ๊ณผ๋Š” ์˜ค๋‹ต.

 

# ์ฒซ ๋ฒˆ์งธ ์˜ค๋‹ต ์ฝ”๋“œ

import sys

input = sys.stdin.readline

N = int(input())

print(10+(N-1))

 

 

โ‘ก ํŒจํ„ด ์ฐพ์•„๋ณด๊ธฐ - ๋‘ ๋ฒˆ์งธ ์‹œ๋„

์กฐ๊ธˆ ๋” ์‹ฌํ˜ˆ์„ ๊ธฐ์šธ์—ฌ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•ด๋ดค๋‹ค.

 

N = 1: d/a/l/d/i/dal/g/o (8์ดˆ) daldida (9์ดˆ) n (10์ดˆ)

N = 2: d/a/l/d/i/dal/g/o (8์ดˆ) daldidalgo (9์ดˆ) daldida (10์ดˆ) n (11์ดˆ)

N = 3d/a/l/d/i/dal/g/o (8์ดˆ) daldidalgo (9์ดˆ) daldidalgodaldida (10์ดˆ) n (11์ดˆ)

N = 4: ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ณ„์‚ฐํ–ˆ์„ ๋•Œ ์ตœ์ข…์ ์œผ๋กœ (12์ดˆ)

 

์—ฌ๊ธฐ๊นŒ์ง€๋งŒ ์ ์–ด ๋ณด๊ณ  '์•„ ๋‹ฌ๋””๋‹ฌ๊ณ ๊ฐ€ ํ•œ ๊ฐœ์ผ ๋•Œ 10์ดˆ๊ณ  ๊ทธ ๋’ค๋ถ€ํ„ฐ๋Š” N์„ 2๋กœ ๋‚˜๋ˆˆ ๋ชซ์„ ๋”ํ•ด์ฃผ๋ฉด ๋˜๋Š”๊ตฌ๋‚˜' ํ–ˆ๋Š”๋ฐ ์ฝ”๋“œ ์ œ์ถœํ•˜๋‹ˆ๊นŒ ๋˜ ์˜ค๋‹ต์ด์—ˆ๋‹ค.

 

# ๋‘ ๋ฒˆ์งธ ์˜ค๋‹ต ์ฝ”๋“œ

import sys

input = sys.stdin.readline

N = int(input())

print(10+(N//2))

 

์ด ๋•Œ๋ถ€ํ„ฐ ๋„ˆ๋ฌด ๋‹จ์ˆœํ•˜๊ฒŒ ์ƒ๊ฐํ•˜๊ณ  ์žˆ๋‚˜? ์‹ถ์–ด ๋…ผ๋ฆฌ์ ์ธ ํ’€์ด๋ฅผ ๊ณ ๋ฏผํ•ด๋ดค๋‹ค. ์ด ๊ณผ์ •์—์„œ ํ’€์ด ์‹œ๊ฐ„์˜ ๋Œ€๋ถ€๋ถ„์ด ์†Œ์š”๋๋‹ค.

 

โ‘ข โญ '×2' ๊ฐœ๋… ํ™œ์šฉํ•˜๊ธฐ โญ

์™„์ „ํ•œ daldidalgo๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“  ๊ฒƒ์—์„œ๋ถ€ํ„ฐ ์ถœ๋ฐœํ•œ๋‹ค. N์ด 2 ์ด์ƒ์ผ ๋•Œ ํ•œ ๊ฐœ์˜ daldidalgo๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ๋‚œ ํ›„์—๋Š” ๊ณ„์† ์ €๊ฑธ ๋ณต์‚ฌํ•ด์„œ ์“ฐ๋ฉด ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

daldidalgo๊ฐ€ ํ•˜๋‚˜๋งŒ ์™„์„ฑ๋˜๊ณ  ๋‚˜๋ฉด ์ด์ œ ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ๊ณผ์ •์„ ํ†ตํ•ด ์•„๋ž˜์ฒ˜๋Ÿผ daldidalgo์˜ ๊ฐœ์ˆ˜๋ฅผ 2๋ฐฐ์”ฉ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

daldidalgo → ์ „์ฒด ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ(1์ดˆ ์†Œ์š”) → daldidalgo daldidalgo

daldidalgo daldidalgo → ์ „์ฒด ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ(1์ดˆ ์†Œ์š”) → daldidalgo daldidalgo daldidalgo daldidalgo

 

์ „์ฒด ๋ณต์‚ฌ-๋ถ™์—ฌ๋„ฃ๊ธฐ ๊ณผ์ •์„ ํ†ตํ•ด daldidalgo ๊ฐœ์ˆ˜๋ฅผ 2๋ฐฐ์”ฉ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ฉด์„œ ์‹œ๊ฐ„์€ ๊ณ„์† 1์ดˆ์”ฉ ๋”ํ•ด์ฃผ๋ฉด ๋˜๋Š”๋ฐ ์ด ๋ถ€๋ถ„์€ while๋ฌธ์„ ์ด์šฉํ•ด ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

while๋ฌธ์„ ๋‹ค ๋Œ๊ณ  ๋‚˜๋ฉด 'daldidalgodaldidan'์„ ๋งŒ๋“œ๋Š” ๋ฐ ํ•„์š”ํ•œ 10์ดˆ๋ฅผ ๋”ํ•ด์„œ ์ตœ์ข… ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. 

 

์„ค๋ช…์ด ๋‚ด๊ฐ€ ๋ด๋„ ๊น”๋”ํ•˜์ง„ ์•Š์€๋ฐ ์—ฌ๊ธฐ๊นŒ์ง€๊ฐ€ ์˜ค๋Š˜์˜ ์ตœ์„ ์ด๋ผ TIL์€ ์ผ๋‹จ ์—…๋กœ๋“œ,,

 

3) ๊ตฌํ˜„

import sys

input = sys.stdin.readline

N = int(input())

if N <= 2:
    answer = 10+(N-1)
else:
    cnt = 1 # 8์ดˆ ๋™์•ˆ ๋‹ค ๋งŒ๋“ค์–ด์ง„ ๋‹ฌ๋””๋‹ฌ๊ณ 
    
    sec = 0
    
    while N >= cnt*2:
        sec += 1
        cnt *= 2
    
    answer = 10+sec

print(answer)

 

4) ์–ด๋ ค์› ๋˜ ์ /๋ฐฐ์šด ์ 

๐Ÿšจ ์–ด๋ ค์› ๋˜ ์ 

  • ๋ฌธ์ œ๋ฅผ ์ดํ•ดํ•˜๋Š” ๋ฐ์—๋Š” ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€ ์•Š์•˜๋Š”๋ฐ ๋‘ ๋ฒˆ์˜ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค๋ฅผ ๋งŒ๋‚œ ํ›„๋ถ€ํ„ฐ๋Š” ์†์œผ๋กœ ์“ฐ๋ฉด์„œ ์ƒ๊ฐํ•˜๋Š”๋ฐ๋„ ๋ญ”๊ฐ€ ๊ณ„์† ํ—ท๊ฐˆ๋ ค์„œ ๋ฐฉ๋ฒ•์„ ๋– ์˜ฌ๋ฆฌ๋Š” ๊ฒŒ ์‰ฝ์ง€ ์•Š์•˜๋‹ค.

โ— ๋ฐฐ์šด ์ 

  • ๊ทธ๋ฆฌ๋””๋Š” ์‰ฝ์ง€ ์•Š๋‹ค...ใ„น๋””๋‹ฌ๊ณ ๋‹ฌ๋””๋‹ฌ๊ณ ×∞