๊ด€๋ฆฌ ๋ฉ”๋‰ด

DOing

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ทธ๋ฆฌ๋””(ํƒ์š•๋ฒ•) with Python ๋ณธ๋ฌธ

์•Œ๊ณ ๋ฆฌ์ฆ˜

[์•Œ๊ณ ๋ฆฌ์ฆ˜] ๊ทธ๋ฆฌ๋””(ํƒ์š•๋ฒ•) with Python

mangdo 2021. 5. 20. 19:36

๐Ÿ’ก ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜

"์ง€๊ธˆ ๋‹น์žฅ ์ข‹์€ ๊ฒƒ๋งŒ ๊ณ ๋ฅด๋Š” ๋ฐฉ๋ฒ•"

ํ•œ๊ตญ์–ด๋กœ ๋ฒˆ์—ญํ•˜๋ฉด ํƒ์š•๋ฒ•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ์–ด๋– ํ•œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ ๋‹จ์ˆœ ๋ฌด์‹ํ•˜๊ฒŒ ํƒ์š•์ ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค. ๋‹จ์ˆœํ•˜์ง€๋งŒ ๊ฐ•๋ ฅํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ๋ฐฉ๋ฒ•์ด๋‹ค.

๐Ÿ’ก ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‚ฌ์šฉ์‹œ ์ฃผ์˜์ 

๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•ด๊ฐ€ '์ตœ์  ํ•ด'๋ฅผ ํ•ญ์ƒ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ ์šฉํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผํ•  ๊ฒƒ์€ "ํ•ด๋‹น ๋ฐฉ๋ฒ•์ด ์ •๋‹น์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๊ฐ€?"์ด๋‹ค.

๐Ÿ’ก ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋Œ€ํ‘œ์  ์˜ˆ์‹œ

Q1. ๊ฑฐ์Šค๋ฆ„๋ˆ ๊ตฌํ•˜๊ธฐ

๋‹น์‹ ์€ ์Œ์‹์ ์˜ ๊ณ„์‚ฐ์„ ๋„์™€์ฃผ๋Š” ์ ์›์ด๋‹ค. ์นด์šดํ„ฐ์—๋Š” ๊ฑฐ์Šค๋ฆ„๋ˆ์œผ๋กœ ์‚ฌ์šฉํ•  500์›, 100์›, 50์›, 10์› ์งœ๋ฆฌ ๋™์ „์ด ๋ฌดํ•œํžˆ ์กด์žฌํ•œ๋‹ค. ์†๋‹˜์—๊ฒŒ ๊ฑฐ์Šฌ๋Ÿฌ ์ค˜์•ผํ•  ๋ˆ์ด N์›์ผ๋•Œ ๊ฑฐ์Šฌ๋Ÿฌ ์ค˜์•ผํ•  ๋™์ „์˜ ์ตœ์†Œ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ผ.

 

[๋ฌธ์ œ์˜ ์•„์ด๋””์–ด]

: "๊ฐ€์žฅ ํฐ ํ™”ํ ๋‹จ์œ„๋ถ€ํ„ฐ ๋ˆ์„ ๊ฑฐ์Šฌ๋Ÿฌ์ฃผ์ž."

๊ฐ€์žฅ ํฐ ํ™”ํ ๋‹จ์œ„๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•ด์„œ ๊ฑฐ์Šฌ๋Ÿฌ์คฌ์„๋•Œ ๋™์ „์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•ด๋‹น ๋ฌธ์ œ์—์„œ ๊ทธ๋ฆฌ๋”” ํ•ด๋ฒ•์€ ์ •๋‹น์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

[์ฝ”๋“œ]

n = 2470

# ํฐ ๋‹จ์œ„์˜ ํ™”ํ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ํ™•์ธ
coin_types = [500, 100, 50, 10]

for coin in coin_types:
	count += n//coin # ํ•ด๋‹น ๋‹จ์œ„์˜ ํ™”ํ๋กœ ๊ฑฐ์Šฌ๋Ÿฌ์ค„ ์ˆ˜ ์žˆ๋Š” ๋™์ „ ๊ฐฏ์ˆ˜
	n = n%coin # ์•„์ง ๊ฑฐ์Šฌ๋Ÿฌ์ค˜์•ผํ•  ๋ˆ
print(count)

 

 


๐Ÿ’ก ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์˜ˆ์‹œ

Q1. 1์ด ๋  ๋•Œ๊นŒ์ง€

 ์–ด๋– ํ•œ ์ˆ˜ N์ด 1์ด ๋ ๋•Œ๊นŒ์ง€ ๋‹ค์Œ์˜ ๋‘๊ณผ์ • ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์„ ํƒํ•˜์—ฌ ์ˆ˜ํ–‰ํ•˜๋ ค๊ณ ํ•œ๋‹ค. ๋‹จ ๋‘๋ฒˆ์งธ ์—ฐ์‚ฐ์€ N์ด ๋‚˜๋ˆ„์–ด ๋–จ์–ด์งˆ ๋•Œ๋งŒ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐฉ๋ฒ• 1) N์—์„œ 1์„ ๋บ€๋‹ค.

๋ฐฉ๋ฒ• 2) N์„ K๋กœ ๋‚˜๋ˆˆ๋‹ค.

N๊ณผ K๊ฐ€ ์ฃผ์–ด์งˆ๋•Œ N์ด 1์ด ๋ ๋•Œ๊นŒ์ง€ 1๋ฒˆ ๋˜๋Š” 2๋ฒˆ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š” ์ตœ์†ŒํšŸ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

* ์ž…๋ ฅ์กฐ๊ฑด

- ์ฒซ๋ฒˆ์งธ ์ค„์— N(2<N<100,000)๊ณผ K(2<K<100,000)๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜๋ฉฐ ๊ฐ๊ฐ ์ž์—ฐ์ˆ˜๋กœ ์ฃผ์–ด์ง„๋‹ค. ์ด๋•Œ ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง€๋Š” N์€ K๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.

* ์ถœ๋ ฅ์กฐ๊ฑด

- N์ด 1์ด๋ ๋•Œ ๊นŒ์ง€ 1๋ฒˆ ํ˜น์€ 2๋ฒˆ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•ด์•ผํ•˜๋Š” ํšŸ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅ

 

์ž…๋ ฅ ์˜ˆ์‹œ : 25 5

์ถœ๋ ฅ ์˜ˆ์‹œ : 2

 

[๋ฌธ์ œ์˜ ์•„์ด๋””์–ด]

: "์ตœ๋Œ€ํ•œ ๋งŽ์ด ๋‚˜๋ˆ„์ž."

์–ด๋– ํ•œ ์ˆ˜๊ฐ€ ์žˆ์„ ๋•Œ (๋ฐฉ๋ฒ• 1)์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค (๋ฐฉ๋ฒ• 2)๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ๋” ๋น ๋ฅด๊ฒŒ 1์ด๋ผ๋Š” ์ˆซ์ž์— ๋„๋‹ฌ ํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

[์ฝ”๋“œ]

n, k = map(int, input().split())
count = 0

while n!=1:
  if n%k ==0:
    n=n//k
    count+=1
  else:
    n=n-1
    count+=1
print(count)

Q2. ๊ณฑํ•˜๊ธฐ ํ˜น์€ ๋”ํ•˜๊ธฐ

๊ฐ ์ž๋ฆฌ๊ฐ€ ์ˆซ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด S๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ์™ผ์ชฝ๋ถ€ํ„ฐ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ํ•˜๋‚˜์”ฉ ๋ชจ๋“  ์ˆซ์ž๋ฅผ ํ™•์ธํ•˜๋ฉฐ ์ˆซ์ž ์‚ฌ์ด์— 'X'๋˜๋Š” '+'์—ฐ์‚ฐ์ž๋ฅผ ๋„ฃ์–ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅํฐ ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”. ๋‹จ, ์ผ๋ฐ˜์ ์ธ ์‚ฌ์น™์—ฐ์‚ฐ ๋ฐฉ์‹ ์ด์•„๋‹Œ, ๋ชจ๋“  ์—ฐ์‚ฐ์€ ์™ธ์ชฝ์—์„œ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง„๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

*์ž…๋ ฅ ์กฐ๊ฑด

- ์ฒซ์งธ์ค„์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด S๊ฐ€ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.(1<=S์˜๊ธธ์ด<=20)

*์ถœ๋ ฅ ์กฐ๊ฑด

- ์ฒซ์งธ์ค„์— ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

 

์ž…๋ ฅ ์˜ˆ์‹œ : 02984

์ถœ๋ ฅ ์˜ˆ์‹œ : 576

 

[๋ฌธ์ œ ์•„์ด๋””์–ด]

:"0์ด๋‚˜ 1์ด ์•„๋‹ˆ๋ผ๋ฉด ๊ณฑํ•˜๋Š”๊ฒŒ ์ข‹๋‹ค"

 

[์ฝ”๋“œ]

data = list(map(int, input()))
result = 0

for i in data:
  # 0์ด๋‚˜ 1์ด๋ผ๋ฉด ๋”ํ•˜์ž
  if i<=1 or result <=1:
    result += i
  else: # ์•„๋‹ˆ๋ผ๋ฉด ๊ณฑํ•˜์ž
    result *= i

print(result)

 


Q3. ๋ชจํ—˜๊ฐ€ ๊ธธ๋“œโญ

  ํ•œ ๋งˆ์„์— ๋ชจํ—˜๊ฐ€๊ฐ€ N๋ช… ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจํ—˜๊ฐ€ ๊ธธ๋“œ์—์„œ๋Š” N๋ช…์˜ ๋ชจํ—˜๊ฐ€๋ฅผ ๋Œ€์ƒ์œผ๋กœ ๊ณตํฌ๋„๋ฅผ ์ธก์ •ํ–ˆ๋Š”๋ฐ ๊ณตํฌ๋„๊ฐ€ ๋†’์€ ๋ชจํ—˜๊ฐ€๋Š” ์‰ฝ๊ฒŒ ๊ณตํฌ๋ฅผ ๋Š๊ปด ์œ„ํ—˜์ƒํ™ฉ์—์„œ ์ œ๋Œ€๋กœ ๋Œ€์ฒ˜ํ•  ๋Šฅ๋ ฅ์ด ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. ๋ชจํ—˜๊ฐ€ ๊ธธ๋“œ์žฅ์ธ ๋™๋นˆ์ด๋Š” ๋ชจํ—˜๊ฐ€ ๊ทธ๋ฃน์„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ตฌ์„ฑํ•˜๊ณ ์ž ๊ณตํฌ๋„๊ฐ€ X์ธ ๋ชจํ—˜๊ฐ€๋Š” ๋ฐ˜๋“œ์‹œ X๋ช… ์ด์ƒ์œผ๋กœ ๊ตฌ์„ฑํ•œ ๋ชจํ—˜๊ฐ€ ๊ทธ๋ฃน์— ์ฐธ์—ฌํ•ด์•ผ ์—ฌํ–‰์„ ๋– ๋‚˜๋„๋ก ๊ทœ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. N๋ช…์˜ ๋ชจํ—˜๊ฐ€์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์—ฌํ–‰์„ ๋– ๋‚  ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ฃน์˜ ์ˆ˜์˜ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”. 

  ์˜ˆ๋ฅผ ๋“ค์–ด N=5์ด๊ณ  ๊ฐ ๋ชจํ—˜๊ฐ€์˜ ๊ณตํฌ๋„๊ฐ€ "2 3 1 2 2"์ด๋ผ๊ณ  ๊ฐ€์ •ํ•ฉ์‹œ๋‹ค.

์ด๋•Œ ๊ทธ๋ฃน 1์— ๊ณตํฌ๋„๊ฐ€ 1,2,3์ธ ๋ชจํ—˜๊ฐ€๋ฅผ ํ•œ ๋ช…์”ฉ ๋„ฃ๊ณ  ๊ทธ๋ฃน2์— ๊ณตํฌ๋„๊ฐ€ 2์ธ ๋‚จ์€ ๋‘๋ช…์„ ๋„ฃ๊ฒŒ๋˜๋ฉด ์ด 2๊ฐœ์˜ ๊ทธ๋ฃน์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ช‡๋ช…์˜ ๋ชจํ—˜๊ฐ€๋Š” ๋งˆ์„์— ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ์–ด๋„ ๋ฉ๋‹ˆ๋‹ค.

 

*์ž…๋ ฅ ์กฐ๊ฑด

- ์ฒซ์งธ ์ค„์— ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜ N์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค.(1<=N<=100,000)

- ๋‘˜์งธ ์ค„์— ๊ฐ ๋ชจํ—˜๊ฐ€์˜ ๊ณตํฌ๋„์˜ ๊ฐ’์„ N์ดํ•˜์˜ ์ž์—ฐ์ˆ˜๋กœ ์ฃผ์–ด์ง€๋ฉฐ ๊ฐ ์ž์—ฐ์ˆ˜๋Š” ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

*์ถœ๋ ฅ ์กฐ๊ฑด

-์—ฌํ–‰์„ ๋– ๋‚  ์ˆ˜ ์žˆ๋Š” ๊ทธ๋ฃน์˜ ์ตœ๋Œ“๊ฐ’์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค

 

*์ž…๋ ฅ ์˜ˆ์‹œ

5

2 3 1 2 2

*์ถœ๋ ฅ ์˜ˆ์‹œ

2

 

[๋ฌธ์ œ ์•„์ด๋””์–ด]

"๊ณตํฌ๋„๊ฐ€ ๋‚ฎ์€ ์‚ฌ๋žŒ๋“ค์€ ๋นจ๋ฆฌ ๋ฌถ์–ด์„œ ๋ณด๋‚ด๊ณ  ๋†’์€ ์‚ฌ๋žŒ์€ ์ฐจ๋ผ๋ฆฌ ์•ˆ๋ณด๋‚ด๋Š”๊ฒŒ ๋‚˜์„ ์ˆ˜ ์žˆ๋‹ค."

->๊ณตํฌ๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•œ๋‹ค.

๊ณตํฌ๋„๊ฐ€ ๊ฐ€์žฅ ๋‚ฎ์€ ๋ชจํ—˜๊ฐ€๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ํ™•์ธํ•˜๋ฉฐ ๊ทธ๋ฃน์— ํฌํ•จ๋  ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•œ๋‹ค.

๋งŒ์•ฝ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜๊ฐ€ ํ˜„์žฌ ํ™•์ธํ•˜๊ณ  ์žˆ๋Š” ๊ณตํฌ๋„๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด ๊ทธ๋ฃน์„ ๊ฒฐ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

 

[์ฝ”๋“œ]

n = int(input())
adventure = list(map(int, input().split()))

adventure.sort() # ๊ณตํฌ๋„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ

result = 0 # ์ด ๊ทธ๋ฃน์˜ ์ˆ˜
count = 0 # ํ˜„์žฌ ๊ทธ๋ฃน์— ํฌํ•จ๋œ ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜

for a in adventure:
  count += 1 # ๋ชจํ—˜๊ฐ€๋ฅผ ํ˜„์žฌ ๊ทธ๋ฃน์— ํฌํ•จ์‹œํ‚จ๋‹ค
  if count >= a: # ๊ณตํฌ๋„๋ณด๋‹ค ๊ทธ๋ฃน์˜ ๋ชจํ—˜๊ฐ€์˜ ์ˆ˜๊ฐ€ ํฌ๋‹ค๋ฉด ๋นจ๋ฆฌ ์ถœ๋ฐœ์‹œํ‚ค์ž
    result += 1
    count = 0 # ๊ทธ๋ฃน ์ดˆ๊ธฐํ™”

print(result)

 

 

์ถœ์ฒ˜ ์ฐธ๊ณ  :

https://youtu.be/2zjoKjt97vQ

๋™์ผํ•œ ๋ฌธ์ œ์ด๋ฉฐ, ์ฝ”๋“œ๋ฅผ ์ €์—๊ฒŒ ๋งž์ถฐ ์•ฝ๊ฐ„์”ฉ ๋ณ€ํ˜•ํ•˜์˜€์Šต๋‹ˆ๋‹ค.