BOJ/๐Ÿฅˆ

โ˜…Implementation&Simulation Upper-Intermediate I - 3 Solvedโ˜…

metamong 2024. 1. 8.

โ˜… 2564 ๊ฒฝ๋น„์› โ˜…

 

import sys
input=sys.stdin.readline

w,h=map(int,input().split())
diameter = (w+h)*2
loc=[]
ans=0
for _ in range(int(input())):
    d,l=map(int,input().split())
    if d == 3:
        loc.append(l)
    elif d == 2:
        loc.append(l+h)
    elif d == 4:
        loc.append(h*2+w-l)
    else: #d==1
        loc.append(h*2+w*2-l)
d,l=map(int,input().split())
if d == 3:
    me = l
elif d == 2:
    me = l+h
elif d == 4:
    me = h*2+w-l
else: #d==1
    me = h*2+w*2-l
for x in loc:
    if abs(me-x) <= (diameter//2):
        ans+=(abs(me-x))
    else:
        ans+=(diameter-abs(me-x))
print(ans)

๐Ÿฆ ๊ตฌํ˜„์„ ์œ„ํ•œ ์•„์ด๋””์–ด๊ฐ€ ํ•„์š”ํ•œ ๋ฌธ์ œ. ์‚ฌ๊ฐํ˜• ๋‚ด๋ถ€๊ฐ€ ์•„๋‹Œ ์„  ๊ฒฝ๊ณ„๋กœ๋งŒ ์ด๋™ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ 4๊ฐœ์˜ ์„ ์„ ํ•œ ์ค„๋กœ ๋ฐ”๊พธ์–ด ๋™/์„œ/๋‚จ/๋ถ ๋ฐฉํ•ญ๋ณ„ ๊ธฐ์ค€์ ์„ ์œ„์™€ ๊ฐ™์ด ํ™”์‚ดํ‘œ๋กœ ํ‘œ์‹œ. ๊ฐ ์ƒ์ ์˜ ์œ„์น˜๋ฅผ ์œ„์˜ ์ผ์ง์„  ์™ผ์ชฝ ๋ ๊ธฐ์ค€์œผ๋กœ๋ถ€ํ„ฐ ๋–จ์–ด์ง„ ๊ฑฐ๋ฆฌ๋กœ ํ‘œ์‹œ. ๋™๊ทผ์ด ์—ญ์‹œ ์™ผ์ชฝ ๋ ๊ธฐ์ค€ ๋–จ์–ด์ง„ ๊ฑฐ๋ฆฌ๋กœ ํ‘œ์‹œํ•˜๊ณ , ๋™๊ทผ์ด์™€ ์ƒ์  ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ๋ฅผ ์ ˆ๋Œ“๊ฐ’์œผ๋กœ ํ‘œ์‹œ. ์ „์ฒด ๊ธธ์ด์˜ ์ ˆ๋ฐ˜๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด ๋ฐ”๋กœ ์ตœ๋‹จ๊ฑฐ๋ฆฌ์— ๋ˆ„์ ์œผ๋กœ ํ•ฉํ•˜๊ธฐ. ๋งŒ์•ฝ ํฌ๋‹ค๋ฉด ์ „์ฒด ๊ธธ์ด์— ํ•ด๋‹น ๊ฑฐ๋ฆฌ๋ฅผ ๋บ€ ๋‚˜๋จธ์ง€๋ฅผ ์ตœ๋‹จ๊ฑฐ๋ฆฌ์— ๋ˆ„์ ์œผ๋กœ ํ•ฉํ•˜๊ธฐ.


โ˜… 5525 IOIOI โ˜…

 

import sys
input=sys.stdin.readline

N=int(input())
M=int(input())
S=input()

numbers=[]

i=0
add=0
ans=0

while i < (M-2):
    if S[i:i+3] == 'IOI':
        add+=1
        i+=2
        if N==add:
            ans+=1
            add-=1
    else:
        add=0
        i+=1
print(ans)

 

๐Ÿ˜ป P1๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๋ฌธ์ž์—ด P์˜ ํŠน์ง•์„ ํ™•์ธํ•˜๋ฉด, IOI์˜ ๋ฐ˜๋ณต์ž„์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ IOI๊ฐ€ ๋๋‚˜๊ณ  ๋งˆ์ง€๋ง‰ I์˜ ์ž๋ฆฌ์—์„œ ๋‹ค์‹œ I๊ฐ€ ๊ฒน์นœ ์ฑ„๋กœ IOI๊ฐ€ ๋ฐ˜๋ณต๋˜๋Š” ํ˜•ํƒœ. ๋”ฐ๋ผ์„œ, IOI๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค๋ฉด, traversing element i๋ฅผ 2๋กœ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  IOI ๊ณ„์† ๊ฒ€์‚ฌ → IOI๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์—ฐ์†๊ฐœ์ˆ˜ add 0์œผ๋กœ ์ดˆ๊ธฐํ™” / ๋งž๋‹ค๋ฉด add 1 ์ฆ๊ฐ€ํ•˜๋ฉด์„œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” P์ธ์ง€ N==add ์กฐ๊ฑด์œผ๋กœ ํ™•์ธํ•œ๋‹ค / ์ด ๋•Œ, IOIOI๋กœ ์›ํ•˜๋Š” P๋ฅผ ๋ฐœ๊ฒฌํ–ˆ๋‹ค๋ฉด ๊ฒน์นœ ์ƒํƒœ๋กœ IOIOIOI์˜ ๊ตต์€ ๋ถ€๋ถ„๋„ ์›ํ•˜๋Š” P์ด๋ฏ€๋กœ ์—ฐ์†๊ฐœ์ˆ˜ add๋ฅผ 1๋งŒ ๋บ€ ๋‹ค์Œ ๊ณ„์†ํ•ด์„œ IOI ์ ๊ฒ€ (๋ณ„๋„๋กœ ๋ˆ„์ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ๊ฒน์น  ์ผ€์ด์Šค๋ฅผ ์ƒ๊ฐํ•ด -1 ํ•ด์ฃผ๋Š” idea ํ•„์š”) 

 

+ ์•„๋‹ˆ๋ฉด IOI์˜ ๊ทœ์น™์„ฑ์„ ์ด์šฉํ•œ ํ’€์ด๊ฐ€ ์•„๋‹Œ, IO๋ฅผ ์ด์šฉํ•ด์„œ ์•„๋ž˜์™€ ๊ฐ™์ด ํ’€ ์ˆ˜ ์žˆ๋‹ค. P1์€ P2์—์„œ 2๊ฐœ๊ฐ€ ์กด์žฌ, P1์€ P3์—์„œ 3๊ฐœ๊ฐ€ ์กด์žฌ .. ์˜ ์„ฑ์งˆ์„ ์ด์šฉ: โ‘  ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์˜ Px ๋ฌธ์ž์—ด ํ˜„ํ™ฉ์„ ๊ตฌํ•œ๋‹ค / โ‘ก N์— ๋”ฐ๋ผ ๋ชจ๋“  Px ๋ฌธ์ž์—ด ๋‚ด์— ๋“ค์–ด ์žˆ๋Š” PN์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋ฉด ๋!

: ์ฆ‰, ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ์•„์ด๋””์–ด ์ด์šฉ์ด ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ. index๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์ ํ”„ํ•˜๋ ค๋ฉด for๋ฌธ๋ณด๋‹ค๋Š” while๋ฌธ ์ถ”์ฒœ (์•„๋ž˜๋Š” for๋ฌธ ํ’€์ด ์ฐธ์กฐ)  

import sys
input=sys.stdin.readline

N=int(input())
M=int(input())
S=input()

numbers=[]
is_consecutive=False
flag=False
i=0
add=0
ans=0
for i in range(M):
    if flag and (i != M-1):
        flag=False
        continue
    if S[i:i+2]=='IO':
        if is_consecutive: #์—ฐ์†ํ•ด์„œ ๋”ํ•˜๊ณ  ์žˆ๋Š” ์ค‘์ด๋ผ๋ฉด
            add+=1
            flag=True
        else: #์—ฐ์†ํ•ด์„œ ๋”ํ•ด์ง€๋Š” ์ง€ ์ฐพ๊ธฐ ์œ„ํ•œ ์ฒซ ์‹œ์ž‘์ ์ด๋ผ๋ฉด
            is_consecutive=True
            flag=True
            add=1
    else:
        if is_consecutive: #์ข…์ „๊นŒ์ง€ ์—ฐ์†ํ•ด์ง„ ๋ฌธ์ž์—ด ๋”ํ–ˆ๋‹ค๋ฉด
            is_consecutive = False
            if S[i] == 'O': numbers.append(add-1)
            else:numbers.append(add)
            add=0

for number in numbers:
    if number >= N:
        ans+=(number-N+1)
print(ans)

โ˜… 30446 ํšŒ๋ฌธ์ˆ˜ โ˜…

 

import math
n=int(input())
length=len(str(n))

ans=0

#1 add up before length
for x in range(1,length):
    ans+=((10**(math.ceil(x/2)-1))*9)

#2 adding the current length

#(1) if length odd
if length%2==1:
    if length == 1:
        ans+=n
    else:
        front=int(str(n)[:(length//2)])

        #<1> front before add up
        front_start=int('1'+'0'*(len(str(front))-1))
        front_end=front-1
        ans+=((front_end-front_start)+1)*10
        #<2> middle add up
        middle=int(str(n)[(length//2)])
        if middle > 0:
            ans+=(middle)
        #<3> current add up
        current=int(str(front)+str(middle)+str(front)[::-1])
        if current <= n:
            ans += 1
else: #(2) if length even
    front=int(str(n)[:(length//2)])

    #<1> front before add up
    front_start=int('1'+'0'*(len(str(front))-1))
    front_end=front-1
    ans+=((front_end-front_start)+1)

    #<2> current add up
    current=int(str(front)+str(front)[::-1])
    if current <= n:
        ans += 1

print(ans)

 

๐Ÿ˜ป ์ˆซ์ž๋กœ ๊ตฌ์„ฑ๋œ ํšŒ๋ฌธ์ˆ˜์˜ ํŠน์ง•์„ ํ™œ์šฉ

โ‘  N์ž๋ฆฌ ์ˆ˜์—์„œ 1์ž๋ฆฌ์—์„œ N-1์ž๋ฆฌ ์ˆ˜๊นŒ์ง€, ๊ฐ๊ฐ์˜ ์ž๋ฆฌ์ˆ˜์˜ ํšŒ๋ฌธ์ˆ˜ ๊ฐœ์ˆ˜ ๋ˆ„์  ๋”ํ•˜๊ธฐ

(์ด ๋•Œ ํ•œ ์ž๋ฆฌ์ˆ˜๋Š” ํšŒ๋ฌธ์ˆ˜ ๊ฐœ์ˆ˜๊ฐ€ 9๊ฐœ, ๋‘ ์ž๋ฆฌ์ˆ˜๋„ 9๊ฐœ, ์„ธ ์ž๋ฆฌ ์ˆ˜๋Š” 90, ๋„ค ์ž๋ฆฌ ์ˆ˜๋„ 90, ๋‹ค์„ฏ ์ž๋ฆฌ์ˆ˜๋Š” 900, ์—ฌ์„ฏ ์ž๋ฆฌ ์ˆ˜๋„ 900 ~ ๊ทœ์น™ ํ™œ์šฉ)

โ‘ก N์ž๋ฆฌ ์ˆ˜์—์„œ์˜ ํšŒ๋ฌธ์ˆ˜ ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ธฐ

(1) N์ด ์ง์ˆ˜์ผ ๊ฒฝ์šฐ, ์˜ˆ๋ฅผ ๋“ค์–ด 123321์ด๋ผ๋ฉด ์ ˆ๋ฐ˜์œผ๋กœ ์ž˜๋ผ <1> 100 ~ 122 ๊นŒ์ง€์˜ ๊ฐœ์ˆ˜ + <2> 123์ผ ๊ฒฝ์šฐ ๋’ค๋Š” 321์ธ ์ˆ˜๊ฐ€ ํ˜„์žฌ ์ˆ˜๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด 1 ์ถ”๊ฐ€

(2) N์ด ํ™€์ˆ˜์ผ ๊ฒฝ์šฐ, ์˜ˆ๋ฅผ ๋“ค์–ด 1234321์ด๋ผ๋ฉด ์ ˆ๋ฐ˜์œผ๋กœ ์ž˜๋ผ front - middle ํ•œ ์ž๋ฆฌ - end๋กœ ๋‚˜๋ˆ„์—ˆ์„ ๋•Œ front์ธ 123์ธ ๊ฒฝ์šฐ <1> (100 ~ 122 ๊นŒ์ง€์˜ ๊ฐœ์ˆ˜) * 10 (middle์ด 0 ~ 9์ธ case ๋ชจ๋‘ ํ•ด๋‹นํ•˜๋ฏ€๋กœ) + <2> front๊ฐ€ 123์ธ ๊ฒฝ์šฐ middle ํ•œ ์ž๋ฆฌ๊ฐ€ 0๋ณด๋‹ค ํด ๋•Œ middle ๋”ํ•˜๊ธฐ (ex) 123์ด front์ด๊ณ  middle์ด 0, 1, 2, 3 ์ด๋ผ๋ฉด 4๊ฐœ case ๋ชจ๋‘ ํ•ด๋‹น) + <3> front๊ฐ€ 123์ด๊ณ  middle๋„ ํ˜„์žฌ middle 4๋ผ๋ฉด ๋’ค๋Š” front๋ฅผ ๋’ค์ง‘์€ 321์„ ๋ถ™์ธ ์ˆ˜๊ฐ€ ํ˜„์žฌ ์ˆ˜๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋ฉด 1 ์ถ”๊ฐ€

(์ด ๋•Œ N์ด 1์ผ ๊ฒฝ์šฐ๋งŒ ์ œ์™ธ. N์ด 1์ผ ๊ฒฝ์šฐ๋Š” ํ•ด๋‹น ์ˆ˜ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ)

→ ์ง์ˆ˜ ์ž๋ฆฌ / ํ™€์ˆ˜ ์ž๋ฆฌ ๋‚˜๋ˆ„์–ด์„œ ๊ฐ๊ฐ ๊ฒฝ์šฐ์˜ ์ˆ˜ ๋‚˜๋ˆ„์–ด ๋”ํ•˜๊ธฐ


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๋Œ“๊ธ€