๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”‘ ์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€ Python

[๋ฐฑ์ค€] ์ •๋ ฌ/ํŒŒ์ด์ฌ 11004 K๋ฒˆ์งธ ์ˆ˜, ๋ฌธ์ž์—ด/1110๋”ํ•˜๊ธฐ์‹ธ์ดํด

by Tamii 2021. 4. 21.
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ 11004 K๋ฒˆ์งธ ์ˆ˜

www.acmicpc.net/problem/11004

 

11004๋ฒˆ: K๋ฒˆ์งธ ์ˆ˜

์ˆ˜ N๊ฐœ A1, A2, ..., AN์ด ์ฃผ์–ด์ง„๋‹ค. A๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ–ˆ์„ ๋•Œ, ์•ž์—์„œ๋ถ€ํ„ฐ K๋ฒˆ์งธ ์žˆ๋Š” ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

www.acmicpc.net

 

๋ฌธ์ œ๋ณด๊ณ  ์ญ?

์ด๊ฑฐ ๋ฐ›์•„์„œ ์ •๋ ฌํ•˜๊ณ  ์ธ๋ฑ์Šค๋กœ ํ’€๋ฉด ๋˜๊ฒ ๋Š”๋ฐ,,, ํ–‡์ง€๋งŒ ๋งค์šฐ ์ฐœ์ฐœํ•ดํ–‡๋‹ค.

์‹œ๊ฐ„์ดˆ๊ณผ๋ฅผ ๊ฑฑ์ •ํ•˜๋ฉฐ 

๋„ฃ์—ˆ๋Š”๋ฐ ์ผ๋‹จ ํ†ต๊ณผ.

 

๋‚ด ํ’€์ด

import sys
input = sys.stdin.readline;

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

num = list(map(int,input().split()))
num.sort()

print(num[k-1])

< ํ•˜์ง€๋งŒ ์‚ด์ง ์ฒ˜์ฐธํ•œ ์‹œ๊ฐ„ ๊ฒฐ๊ณผ...

 

 

 

๋žญํฌ์ •๋ ฌ๋กœ ํ•ด๋ณผ๊นŒ ํ–ˆ์ง€๋งŒ ์ค‘๋ณต์ด ์—†๋‹ค๋Š” ์–˜๊ธฐ๊ฐ€ ์—†์–ด์„œ ์ผ๋‹จ ํŒจ์Šค.

 

 

ํ•ด๋‹น ๋ถ€๋ถ„ ์ถ•์•ฝ ๊ฐ€๋Šฅ

num = list(map(int,input().split()))
num.sort()
print(num[k-1])


print(sorted(list(map(int,inpuyt().split()))[k-1])

๊ตณ์ด num์ด๋ผ๋Š” ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๋„ฃ์„ ํ•„์š” ์—†์ด ๋ฐ”๋กœ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด 3900ms ๋Œ€๋กœ ๋‹จ์ถ•ํ•  ์ˆ˜ ์ž‡๋‹ค.


 

๐Ÿ“Œ 1110_๋”ํ•˜๊ธฐ์‚ฌ์ดํด

๋‚ด ํ’€์ด1

import sys
input = sys.stdin.readline


num=input().strip()
newNum=num
count=0


while True:
    if int(newNum)<10:
        newNum='0'+newNum

    fn=int(newNum)%10
    sn=(int(newNum[0])+int(newNum[1]))%10
    ans=str(fn)+str(sn)
    if ans == num:
        count+=1
        print(count)
        break
    else:
        newNum=str(ans);
        count+=1

์ฒ˜์Œ์—๋Š” ๋ฐ›์„๋•Œ ๋ฌธ์ž๋กœ ๋ฐ›๊ณ  

๋ฌธ์ž์—ด๋ผ๋ฆฌ ๋”ํ•ด์ฃผ๊ณ  

str <-> int๋ฅผ  ์™”๋‹ค๊ฐ”๋‹คํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์—ˆ๋‹ค.(ใ… ใ… )

 

26 ๊ณผ๊ฐ™์€ ๋‘์ž๋ฆฌ ์ˆ˜๋Š” ์ž˜ ๋‚˜์˜ค์ง€๋งŒ

1๊ณผ ๊ฐ™์ด ํ•œ์ž๋ฆฌ ์ˆ˜๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚˜์™”๋‹ค.

 

sn์˜ ์—ฐ์‚ฐ์ด ๋‘์ž๋ฆฌ ์ˆ˜์—์„œ๋งŒ ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๊ทธ ์ดํ›„์— ์—„์ฒญ๋‚œ ์ง€์˜ฅ์— ๋น ์กŒ๋‹ค.

๋ถ„๋ช… ๊ฐ„๋‹จํ•œ ๊ฑด๋ฐ ์ € ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋ฒ—์–ด๋‚˜์ง€ ์•Š์œผ๋ ค๊ณ ๋งŒ ํ•ด์„œ ๋‹ต์ด ๋‚˜์˜ค์ง€ ์•Š์•˜๋‹ค. 

๋‹ค ๊ฐˆ์•„์—Ž๊ณ  ์ˆ˜ํ•™์ ์œผ๋กœ ์ ‘๊ทผํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค.

 

 

 

๋‚ด ํ’€์ด2

import sys
input = sys.stdin.readline

num=int(input())
newNum=100
fn=num//10 
sn=num%10
add=fn+sn
newNum = sn*10+add%10

count=1


while num!=newNum:
    fn=newNum//10 
    sn=newNum%10
    add=fn+sn
    newNum = sn*10+add%10
    count+=1
    
print(count)

1) n์„ ์ˆซ์ž๋กœ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค 26

2) newNum์€ 100์œผ๋กœ์ดˆ๊ธฐํ™” (num์€ ๋‘์ž๋ฆฌ์ˆ˜๋ฅผ ๋„˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—)

3) fn : 2 sn: 6

4) add : 8

5) ์ƒˆ๋กœ์šด์ˆซ์ž newNum : 68 (sn*10 + add*%10) 

 

๊ณ„์† ์—ฐ์‚ฐ๊ฒฐ๊ณผ๋Š” newNum์— ์ž…๋ ฅํ•˜๊ณ  num๊ณผ ๋น„๊ตํ•ด๋ณด๋ฉฐ count๋ฅผ ์„ผ๋‹ค.

 

์ถ•์•ฝ ๊ฐ„์œผ

import sys
input = sys.stdin.readline

num=int(input())
newNum=num

count=1

while (True):
    fn=newNum//10 
    sn=newNum%10
    add=fn+sn
    newNum = sn*10+add%10
    if newNum==num:
        break
    count+=1
    
print(count)

๋‚˜์˜ ํ’€์ด์—์„œ๋Š” ์ฒ˜์Œ ๊ณ„์‚ฐํ•˜๋Š” ๋ถ€๋ถ„์ด ์ค‘๋ณต๋˜์–ด์žˆ์ง€๋งŒ 

while๋ฌธ + if๋ฌธ์œผ๋กœ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‹ค๋งŒ ์†๋„ ์ฐจ์ด๋Š” ์—†์—ˆ๋‹ค.

 

๐Ÿ’™์˜ค๋‹ต์ด ๋‚˜์™”์„ ๋•Œ ๊ณผ๊ฐํ•˜๊ฒŒ ๋‹ค๋ฅธ ํ’€์ด ๋ฐฉ๋ฒ•์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ํƒœ๋„๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ์ž‘์€ ๋ถ€๋ถ„์— ์ง‘์ฐฉํ•˜์—ฌ ํฐ ํ๋ฆ„์„ ์žƒ์ง€ ๋ง์ž

 

๋Œ“๊ธ€