BOJ/๐Ÿฅˆ

โ˜…BF Intermediate I - 14 Solvedโ˜…

metamong 2022. 11. 21.

โ˜… 1436 ์˜ํ™”๊ฐ๋… ์ˆŒ โ˜…

 

N = int(input())
cnt = 0
start = 666

while 1:
    if '666' in str(start):
        cnt += 1
        if N == cnt:
            print(start)
            break        
        start+=1
    else:
        start+=1

 

๐Ÿง•๐Ÿผ ๋ง ๊ทธ๋Œ€๋กœ brutalํ•˜๊ฒŒ ์ผ์ผ์ด ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜์—์„œ 666 ํฌํ•จ ์—ฌ๋ถ€๋ฅผ ๋”ฐ์ง€๋Š” ๋ฌธ์ œ 

→ ์ตœ์†Œํ•œ์˜ ์‹œ๊ฐ„ ๋‹จ์ถ•์„ ์œ„ํ•ด break๋ฅผ ๋„ฃ์—ˆ๊ณ , 666๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒŒ ์ฝ”๋“œ ์„ค์ •

 

๐Ÿง•๐Ÿผ ์œ„์˜ ํ’€์ด๋Š” โ‘ cnt ๋ณ€์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด 1๋ถ€ํ„ฐ ์ถ”๊ฐ€ํ•˜๋ฉฐ ์ฒดํฌํ•˜๋Š” ๊ตฌ์กฐ์ด๋‚˜, ์•„๋ž˜์˜ ํ’€์ด๋Š” โ‘กN ์ž์ฒด์—์„œ 1์”ฉ ๊ฐ์†Œํ•˜๋ฉฐ ์ฒดํฌํ•˜๋Š” ๊ตฌ์กฐ
โ€ป while N ํ’€์ด๊ฐ€ ์‹ ๋ฐ•ํ•ด์„œ ๊ฐ€์ ธ์™”์Œ โ€ป

N = int(input())
cnt = 0
start = 665

while N:
    start += 1
    if '666' in str(start):
        N -= 1
print(start)

 

(๐Ÿง•๐Ÿผ *์ฐธ๊ณ ) ๊ฐ๊ฐ์˜ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด brute-force์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ•œ์œผ๋กœ ์•„๋ž˜์˜ ํ’€์ด์™€ ๊ฐ™์ด ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.)

import sys

N = int( sys.stdin.readline() )

num_list = [0] * 10000
cnt, num_cnt = 0, 0

# 5666, 6660~6669, 7666
# 65666, 66600~66699, 67666
# 665666, 666000~666999, 667666
# 6665666, 6660000~6669999, 6667666
while(1) :
    num = int( str(num_cnt) + "666" )

    if num_cnt % 10000 == 6666 :
        for i in range(10000) :
            num_list[cnt] = (num-6666) + i
            cnt += 1
            if cnt == N :
                break
    elif num_cnt % 1000 == 666 :
        for i in range(1000) :
            num_list[cnt] = (num-666) + i
            cnt += 1
            if cnt == N :
                break
    elif num_cnt % 100 == 66 :
        for i in range(100) :
            num_list[cnt] = (num-66) + i
            cnt += 1
            if cnt == N :
                break
    elif num_cnt % 10 == 6 :
        for i in range(10) :
            num_list[cnt] = (num-6) + i
            cnt += 1
            if cnt == N :
                break
    else :
        num_list[cnt] = num
        cnt += 1
    
    if cnt == N :
        print(num_list[cnt-1])
        break

    num_cnt += 1

โ˜… 4673 ์…€ํ”„ ๋„˜๋ฒ„ โ˜…

 

๐Ÿง•๐Ÿผ brute-force ๋ฌธ์ œ๋กœ ๋ชจ๋“  ์ˆซ์ž๋ฅผ d(n)์„ ๋Œ๋ ค d(n)์— ํ•ด๋‹น๋˜์ง€ ์•Š๋Š” ์…€ํ”„ ๋„˜๋ฒ„๋ฅผ ์ผ์ผ์ด ๋ชจ๋‘ ์ถœ๋ ฅํ•˜๋Š” ๋ฌธ์ œ

 

๐Ÿง•๐Ÿผ list vs. set

d(n)์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ด๋–ค ์ž๋ฃŒํ˜•์— ์ €์žฅํ•˜๋Š”๊ฐ€์— ๋”ฐ๋ผ ์‹คํ–‰์‹œ๊ฐ„์ด ์ฒœ์ฐจ๋งŒ๋ณ„์ด ๋œ๋‹ค.

→ ์ตœ์ข…์ ์œผ๋กœ in ์—ฐ์‚ฐ์ž๋กœ ์„ค์ •ํ•œ ์ž๋ฃŒํ˜•์— ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ค‘์š”

โ‘  list์˜ in ์—ฐ์‚ฐ์ž - ์‹œ๊ฐ„๋ณต์žก๋„ $O(n)$

โ‘ก set์˜ in ์—ฐ์‚ฐ์ž - ์‹œ๊ฐ„๋ณต์žก๋„ $O(1)$

→ list๊ณผ tuple์€ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•ด์•ผ ํ•˜๋ฏ€๋กœ in ์—ฐ์‚ฐ์ž์— $O(N)$์ด๋ผ๋Š” ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ ๊ฑธ๋ฆฌ์ง€๋งŒ, set๊ณผ dictionary๋Š” hash ๊ตฌ์กฐ๋กœ ํ‰๊ท  $O(1)$ time complexity

def d(n):
    r=n
    for i in list(str(n)):r+=int(i) 
    return r
s=set()
for n in range(1,10001):s.add(d(n))
for n in range(1,10001):
    if n not in s:print(n)

 

 

→ ์†Œ์š”๋œ ์‹œ๊ฐ„์ด ์ฒœ์ฐจ๋งŒ๋ณ„! set์ด ํ›จ์”ฌ ๋” ๋น ๋ฅด๋‹ค


โ˜… 7568 ๋ฉ์น˜ โ˜…

 

N = int(input())
lst = []

for _ in range(N): #2 ≤ N ≤ 50
    x, y = map(int, input().split())
    lst.append((x,y)) #O(1)

for human in lst: #10 ≤ x, y ≤ 200 #O(n)
    me = human
    grade = 1

    for others in lst: #O(n)
        if others[0] > me[0] and others[1] > me[1]:
            grade += 1
    
    print(grade)

 

๐Ÿง•๐Ÿผ ๊ฐ๊ฐ ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค์„ ๋Œ๋ฉด์„œ ๋‚˜๋ณด๋‹ค ํ‚ค์™€ ๋ชธ๋ฌด๊ฒŒ๊ฐ€ ๋ชจ๋‘ ํฌ๋‹ค๋ฉด 1์”ฉ ์ถ”๊ฐ€ํ•ด ์ตœ์ข… ํ•ฉํ•œ ๊ฒฐ๊ณผ์ธ ๋“ฑ์ˆ˜๋ฅผ ๊ฐ ์ธ์›๋ณ„๋กœ ์ญ‰ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ๋!


โ˜… 8892 ํŒฐ๋ฆฐ๋“œ๋กฌ โ˜…

 

โ‘  itertools์˜ combinations๋ฅผ ํ™œ์šฉํ•ด ๊ฐ€๋Šฅํ•œ ๋‘ word pair๋ฅผ ๋ชจ๋‘ ๊ตฌํ•˜๊ณ , ์•ž์œผ๋กœ๋‚˜ ๋’ค๋กœ๋‚˜ ํ•ฉ์ณ์„œ palindrome์ธ์ง€ ํ™•์ธํ•˜๋Š” code

from itertools import combinations
import sys
input=sys.stdin.readline
def palindrome(word1, word2):
    n1=word1+word2
    n2=word2+word1
    if n1 == n1[::-1]:return n1    
    elif n2 == n2[::-1]:return n2
    else:return '0'

for _ in range(int(input())):
    cnt = 0
    words = [input().rstrip() for _ in range(int(input()))]
    pairs = list(combinations(words, 2))
    for pair in pairs:
        res = palindrome(pair[0], pair[1])
        if res.isdigit():cnt += 1
        else:
            print(res)
            break
    if cnt == len(pairs):
        print(0)

 

โ‘ก ๋‘ for๋ฌธ์„ ๋Œ๋ฉด์„œ ๊ฐ๊ฐ์˜ index๋ฅผ ํ™•์ธํ•˜๋ฉฐ indexing์œผ๋กœ ๊ฐ word๋ฅผ ํ•ฉ์นœ ๊ฒฐ๊ณผ๊ฐ€ palindrome์ธ์ง€ ํ™•์ธํ•˜๋Š” code

import sys

def isPalindrome(word_a, word_b):
  word = word_a + word_b
  if word == word[::-1]:
    print(word)
    sys.exit(0)

if __name__ == "__main__":
  t = int(input())

  for _ in range(t):
    k = int(input())
    words = [sys.stdin.readline().rstrip() for _ in range(k)]

    for i in range(k-1):
      for j in range(i+1, k):
        isPalindrome(words[i], words[j])
        isPalindrome(words[j], words[i])
        
    print("0")

 

 


โ˜… 1065 ํ•œ์ˆ˜ โ˜…

 

N=int(input())
if N<100:print(N)
else:
    cnt=99
    for i in range(100,N+1):
        l=list(map(int,str(i)))
        if (l[0]-l[1])==(l[1]-l[2]):cnt+=1
    print(cnt)

 

๐Ÿง•๐Ÿผ 100๋ฏธ๋งŒ์˜ ์ˆ˜๋Š” ๋ชจ๋‘ ํ•œ์ˆ˜์— ํ•ด๋‹นํ•˜๊ณ , 100์ด์ƒ์ผ ๊ฒฝ์šฐ ์ง์ ‘ ๋“ฑ์ฐจ์ˆ˜์—ด์ธ์ง€ ํ™•์ธํ•ด ์ผ์ผ์ด ๊ฐœ์ˆ˜ 1์”ฉ ๋”ํ•ด์ฃผ๋Š” brute-force ์ „ํ˜•์ ์ธ ์œ ํ˜•


โ˜… 1018 ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ โ˜…

 

import sys
input = sys.stdin.readline

M,N=map(int,input().split())

chess = []

row1 = ['W','B','W','B','W','B','W','B']
row2 = ['B','W','B','W','B','W','B','W']
cmp1 = [row1,row2,row1,row2,row1,row2,row1,row2]
cmp2 = [row2,row1,row2,row1,row2,row1,row2,row1]

min_l = []

for _ in range(M):
    chess.append(list(input()))

for a in range(M-7):
    for b in range(N-7):
        cnt1,cnt2=0,0
        your_chess = []
        for i in range(8):
            row = []
            for j in range(8):
                row.append(chess[a+i][b+j])
            your_chess.append(row)

        for i in range(8):
            for j in range(8):
                if your_chess[i][j] != cmp1[i][j]:
                    cnt1 += 1
                if your_chess[i][j] != cmp2[i][j]:
                    cnt2 += 1
        min_l.append(min(cnt1,cnt2))
print(min(min_l))

 

๐Ÿง•๐Ÿผ 2์ฐจ์› ๋ฐฐ์—ด + ๋ธŒ๋ฃจํŠธ ํฌ์Šค ์œ ํ˜•

 

๐Ÿง•๐Ÿผ

โ‘  ๋จผ์ € ๋น„๊ตํ•ด์•ผ๋  cmp1๊ณผ cmp2 ๋ฐฐ์—ด์„ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋งŒ๋“ค๊ธฐ

โ‘ก ๋‚ด 2์ฐจ์› ๋ฐฐ์—ด์„ chess์— ์ž…๋ ฅํ•˜๊ธฐ

โ‘ข Mํ–‰ N์—ด์˜ chess์—์„œ ์—ฌ๋Ÿฌ 8x8 ์ •์‚ฌ๊ฐํ˜• ํฌ๊ธฐ์˜ chess๋ณ„๋กœ ๊ฐ๊ฐ ๋‚˜๋ˆ„์–ด ๋น„๊ต๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค

๋‘ for๋ฌธ์„ ๋Œ๋ ค 0~(M-8) / 0~(N-8)๊นŒ์ง€ ์ •์‚ฌ๊ฐํ˜• ์‹œ์ž‘์ ์„ ๊ฐ๊ฐ ๋‹ค๋ฅด๊ฒŒ ๋‘์–ด ๊ฐ ์ •์‚ฌ๊ฐํ˜• ๋ณ„๋กœ cmp1๊ณผ cmp2๋ผ๋ฆฌ ๋น„๊ต

โ‘ฃ cmp1๊ณผ cmp2 ๋น„๊ตํ•œ ๊ฒƒ ์ค‘ ์ตœ์†Ÿ๊ฐ’ ์ฐพ์•„ list์— ๋„ฃ์–ด ์ตœ์ข…์ ์œผ๋กœ list ์ตœ์†Ÿ๊ฐ’ ์ถœ๋ ฅ


โ˜… 1051 ์ˆซ์ž ์ •์‚ฌ๊ฐํ˜• โ˜…

 

import sys
input=sys.stdin.readline
N,M=map(int,input().split())

arr=[]

for _ in range(N):
    arr.append(list(map(int,input().rstrip())))

size=min(N,M) #initial square size
ans=0
flag=False

while 1:
    for i in range(N-size+1):
        for j in range(M-size+1):
            if arr[i][j] == arr[i+size-1][j] == arr[i][j+size-1] == arr[i+size-1][j+size-1]:
                ans = size*size
                flag=True
                break
        if flag: break
    size-=1
    if size==0:break
    if flag: break
print(ans)

 

๐Ÿง•๐Ÿผ ์œ„ ์ฒด์ŠคํŒ ์น ํ•˜๊ธฐ ๋ฌธ์ œ์™€ ๋˜‘๊ฐ™์€ 2์ฐจ์› ๋ฐฐ์—ด + BF ๋ฌธ์ œ ์œ ํ˜•์ด๋‹ค. i์™€ j ๊ฐ€๋กœ์™€ ์„ธ๋กœ index ๋ฒ”์œ„๋ฅผ ์ฃผ์–ด์ง„ size ์ •์‚ฌ๊ฐํ˜•์— ๋งž๊ฒŒ range()๋ฌธ์„ ์ž˜ ์„ธ์šฐ๊ณ , ์ •์‚ฌ๊ฐํ˜•์˜ ์กฐ๊ฑด์ด ๋งž๋‹ค๋ฉด flag ๋ณ€์ˆ˜๋กœ break๋ฌธ์„ ์ ์ ˆํžˆ ๋งŒ๋“ ๋‹ค.

 

๐Ÿง•๐Ÿผ size๊ฐ€ 0์ผ ๊ฒฝ์šฐ index ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ๋ฏ€๋กœ indexerror๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด break๋ฌธ ์ถ”๊ฐ€

 

๐Ÿง•๐Ÿผ ์—ฌ๋Ÿฌ break๋ฌธ์„ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ์œ ํ˜•!


โ˜… 1120 ๋ฌธ์ž์—ด โ˜…

 

A,B=input().split()
ans=51
a,b=len(A),len(B)
cnt=b-a+1
for i in range(cnt):
    x=0
    y=0
    for j in range(i,i+a):
        if A[y]!=B[j]:
            x+=1
        y+=1
    ans=min(ans,x)
print(ans)

 

๐Ÿง•๐Ÿผ ๋ฌธ์ž์—ด B๋Š” ๊ณ ์ •ํ•œ ์ฑ„๋กœ ๋ฌธ์ž์—ด A๋ฅผ ์ฒซ ์œ„์น˜๋ถ€ํ„ฐ ๊ฐ€๋Šฅ ๋ ์œ„์น˜๊นŒ์ง€ ๋ฐ˜๋ณต๋ฌธ

: ์ฐจ์ด๊ฐ€ ์ตœ์†Œ๊ฐ€ ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ A์™€ B๊ฐ„์˜ ๋‚จ์€ ์ž๋ฆฌ๋Š” ๋ชจ๋‘ ๊ฐ™๊ฒŒ ์„ค์ •

: ๋ฐ˜๋ณต๋ฌธ ๋Œ๋ฉฐ A์™€ B ์‚ฌ์ด์˜ ์ฐจ์ด ๊ฐฏ์ˆ˜ ์ตœ์†Ÿ๊ฐ’ update

 

๐Ÿง•๐Ÿผ + ์ด ๋•Œ ๋ฌธ์ž์—ด A์˜ index๋Š” ํ•ญ์ƒ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•จ ์ฃผ์˜


โ˜… 1543 ๋ฌธ์„œ ๊ฒ€์ƒ‰ โ˜…

 

paper=input()
word=input()

ans=0
j=0
while j<=(len(paper)-len(word)):
    if paper[j:j+len(word)] == word:
        ans+=1
        j+=len(word)
    else:
        j+=1
print(ans)

 

๐Ÿง•๐Ÿผ ์ผ์ผ์ด word์™€ ๋™์ผํ•œ ๋ฌธ์ž์—ด while๋ฌธ ๋Œ๋ฉด์„œ ์ฐพ์•„์ฃผ๊ธฐ


โ˜… 1057 ํ† ๋„ˆ๋จผํŠธ โ˜…

 

* ํ’€์ด 1) ์ „์ฒด ๋ผ์šด๋“œ์˜ ์ˆ˜๋ฅผ log2๋กœ ๊ตฌํ•˜๊ณ  ๊ฐ ๋ผ์šด๋“œ์˜ ๋ฒˆํ˜ธ๋ฅผ ๋ชจ์€ 2์ฐจ์› list ๊ตฌํ˜„. ๋ผ์šด๋“œ ์ง„ํ–‰ํ•˜๋ฉด์„œ list append. ๋ฒˆํ˜ธ๊ฐ€ ๊ฐ™์€ list์— ์žˆ์„ ๋•Œ๊นŒ์ง€ ์ ๊ฒ€

import math,sys
n=int(math.log(100_000,2))
rounds=[[] for _ in range(n+1)]
N,a,b=map(int,input().split())
l=[i for i in range(1,N+1)]
rounds[0]=l
rnd=0
while 1:
    for i in range(0,len(rounds[rnd]),2):
        if i == len(rounds[rnd])-1: #ํ™€์ˆ˜์ผ ๊ฒฝ์šฐ ๋งˆ์ง€๋ง‰ ๋ฒˆํ˜ธ๋Š” ์ž๋™ ๋‹ค์Œ๋ผ์šด๋“œ ์ง„์ถœ
            rounds[rnd+1].append(rounds[rnd][i])
        else:
            if rounds[rnd][i] not in [a,b] and rounds[rnd][i+1] not in [a,b]: #๋‘˜ ๋‹ค ์—†๋‹ค๋ฉด
                rounds[rnd+1].append(rounds[rnd][i])
            elif rounds[rnd][i] in [a,b] and rounds[rnd][i+1] in [a,b]: #๋‘˜ ๋‹ค ์žˆ๋‹ค๋ฉด ๋‹ต ๋ฐœ๊ฒฌ!
                print(rnd+1)
                sys.exit()
            elif rounds[rnd][i] in [a,b]: #์•ž ๋ฒˆํ˜ธ์— ๋ˆ„๊ตฐ๊ฐ€ ์žˆ๋‹ค๋ฉด ์•ž๋ฒˆํ˜ธ ์˜ฌ๋ผ๊ฐ€๊ธฐ
                rounds[rnd+1].append(rounds[rnd][i])
            else:#๋’ท ๋ฒˆํ˜ธ์— ์žˆ๋‹ค๋ฉด ๋’ท๋ฒˆํ˜ธ ์˜ฌ๋ผ๊ฐ€๊ธฐ
                rounds[rnd+1].append(rounds[rnd][i+1])
    rnd+=1

 

* ํ’€์ด 2) ๋ผ์šด๋“œ๊ฐ€ ์ง„ํ–‰๋˜๋ฉด์„œ ์ง€๋ฏผ๊ณผ ํ•œ์ˆ˜์˜ ๋ฒˆํ˜ธ๊ฐ€ (n+1)//2์”ฉ ๋ณ€ํ•จ. ์„œ๋กœ ๊ฐ™์•„์งˆ ๋•Œ ๋ผ์šด๋“œ ์ˆ˜ ์ถœ๋ ฅ

N,a,b=map(int,input().split())
ans=0
while (a!=b):
    a,b=(a+1)//2,(b+1)//2
    ans+=1
print(ans)

๋‘ ์ˆ˜์˜ (n+1)//2 ๊ฒฐ๊ณผ๊ฐ€ ๊ฐ™๋‹ค๋Š” ๊ฑด ๋งŒ๋‚œ๋‹ค๋Š” ๋œป, ๊ฐ™์ง€ ์•Š์œผ๋ฉด ๋งŒ๋‚˜์ง€ ์•Š์Œ


โ˜… 1969 DNA โ˜…

 

import sys
input = sys.stdin.readline

N,M=map(int,input().split())
freq=[[0,0,0,0] for _ in range(M)] #ACGT

for _ in range(N):
    DNA=input().rstrip()
    i=0
    for nct in list(DNA):
        idx='ACGT'.index(nct)
        freq[i][idx]+=1
        i+=1

HD=0
ans=[]
for freq_pair in freq:
    ans.append('ACGT'[freq_pair.index(max(freq_pair))])
    HD+=(N-max(freq_pair))
print(*ans,sep='')
print(HD)

 

๐Ÿง•๐Ÿผ ๊ฐ ์ž๋ฆฌ๋ณ„ Hamming Distance์˜ ํ•ฉ์ด ๊ฐ€์žฅ ์ž‘์€ ๋‰ดํด๋ ˆ์˜คํƒ€์ด๋“œ๋Š” ์ตœ๋Œ€๋นˆ๋„ ๋‰ดํด๋ ˆ์˜คํƒ€์ด๋“œ(์‚ฌ์ „์ˆœ)

๐Ÿง•๐Ÿผ Hamming Distance๋Š” ๊ฐ ์ž๋ฆฌ๋ณ„ ์ „์ฒด ๋‰ดํด๋ ˆ์˜คํƒ€์ด๋“œ์˜ ๊ฐœ์ˆ˜ - ์ตœ๋Œ€๋นˆ๋„ ๋‰ดํด๋ ˆ์˜คํƒ€์ด๋“œ์˜ ๋นˆ๋„์ˆ˜์˜ ๋ˆ„์ ํ•ฉ

 

๐Ÿง•๐Ÿผ ๋ฌธ์ž์—ด ACGT(์•ŒํŒŒ๋ฒณ์ˆœ)์˜ indexing


โ˜… 23428 Painting Roofs โ˜…

import sys
input=sys.stdin.readline

m,n=map(int,input().split())
a,b=0,0
arr=[]
for _ in range(m):
    arr.append(list(input().rstrip()))

for i in range(m):
    if i%2==0:
        flag=True
        for x in arr[i]:
            if flag: #'2'
                if x == '1': a+=1
                flag=False
            else:
                flag = True
                if x == '2': a+=1
    else:
        flag=True
        for x in arr[i]:
            if flag: 
                if x == '2': a+=1
                flag=False
            else:
                flag = True
                if x == '1': a+=1

for i in range(m):
    if i%2==0:
        flag=True
        for x in arr[i]:
            if flag: #'2'
                if x == '2': b+=1
                flag=False
            else:
                flag = True
                if x == '1': b+=1
    else:
        flag=True
        for x in arr[i]:
            if flag: 
                if x == '1': b+=1
                flag=False
            else:
                flag = True
                if x == '2': b+=1

print(min(a,b))

 

๐Ÿง•๐Ÿผ 1๊ณผ 2๊ฐ€ ๋ฒˆ๊ฐˆ์•„ ๋‚˜์˜ค๋Š” 2๊ฐ€์ง€ ์ผ€์ด์Šค์˜ ๋ฌด๋Šฌ ๊ฐ๊ฐ์—์„œ brute-force๋กœ ๋ฐ”๊ฟ”์•ผ ํ•˜๋Š” ๊ฐœ์ˆ˜ ๊ตฌํ•˜๊ณ , ๋‘ ์ผ€์ด์Šค ์ค‘ ์ตœ์†Ÿ๊ฐ’ ์ถœ๋ ฅ


โ˜… 2993 ์„ธ ๋ถ€๋ถ„ โ˜…

import sys
input=sys.stdin.readline

word=input().rstrip()
ans=[]

for x in range(1,len(word)):
    for y in range(x+1,len(word)):
        str1,str2,str3=word[:x],word[x:y],word[y:]
        ans.append(str1[::-1]+str2[::-1]+str3[::-1])
print(sorted(ans)[0])

๐Ÿง•๐Ÿผ ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ์ผ€์ด์Šค๋ฅผ ์ง์ ‘ 2์ค‘ for๋ฌธ์œผ๋กœ ๋Œ๋ฆฌ๋ฉด์„œ ์ฐพ๋Š”๋‹ค. ๊ธธ์ด๋Š” 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฏ€๋กœ ์ถฉ๋ถ„ํžˆ ์ œํ•œ ์‹œ๊ฐ„ ๋‚ด์— ํ•ด๊ฒฐ ๊ฐ€๋Šฅ. ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋Š” sorted() ํ•จ์ˆ˜๋กœ ํ•œ ๋ฒˆ์— ํ•ด๊ฒฐ


โ˜… 1251 ๋‹จ์–ด ๋‚˜๋ˆ„๊ธฐ โ˜…

๐Ÿง•๐Ÿผ ์œ„ <2993 ์„ธ ๋ถ€๋ถ„> ๊ณผ ๋™์ผ ๋ฌธ์ œ


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

๋Œ“๊ธ€