AtCoder Beginner Contest 281

κΉ€ν˜„μ€€Β·2022λ…„ 12μ›” 11일
0

Atcoder

λͺ©λ‘ 보기
1/3

πŸ“Œ AtCoder Beginner Contest 281

2022-12-10 일자 9μ‹œλΆ€ν„° 10μ‹œ 40λΆ„κΉŒμ§€ μ§„ν–‰λœ μ‹€μ‹œκ°„ λŒ€νšŒμ— μ°Έμ—¬ν–ˆμŠ΅λ‹ˆλ‹€.

μ΄λ²ˆμ—λŠ” λ¬Έμ œκ°€ μ μ ˆν•΄μ„œ λΉ λ₯΄κ²Œ 3solve λ₯Ό ν•˜μ˜€λŠ”λ° Dλ²ˆμ€ μ ‘κ·Όμ΄λ§Žμ΄ μ–΄λ €μ› λ˜κ²ƒ κ°™μŠ΅λ‹ˆλ‹€.
Dλ²ˆμ€ 풀지λͺ»ν•΄μ„œ λ”°λ‘œ 이번 λΈ”λ‘œκ·Έμ—μ„œ 풀이λ₯Ό ν•˜μ§€ μ•Šμ•˜μ§€λ§Œ , μ²˜μŒμ—λŠ” itertools 의 combination ν•¨μˆ˜λ₯Ό μ‚¬μš©ν–ˆμœΌλ‚˜ μ‹œκ°„μ΄ˆκ³Όλ₯Ό λ‹Ήν–ˆλŠ”λ° , DP μ•Œκ³ λ¦¬μ¦˜μ„ 톡해 ν’€μˆ˜μžˆλ‹€λŠ”κ±Έ λ“€μ—ˆμŠ΅λ‹ˆλ‹€.

DPλ₯Ό μ•Œκ³ μžˆμ§€λ§Œ μ–΄λ–€ λ¬Έμ œκ°€ λ‚˜μ˜¬λ•Œ κ·Έ λ¬Έμ œμ— λŒ€ν•΄ 적절히 μ“Έμˆ˜μžˆλ‹€λŠ”κ²ƒμ€ λͺ‡λ°°λŠ” μ–΄λ €μš΄κ±°κ°™λ„€μš”.

πŸ“Œ A - Count Down

본문 링크

κ°„λ‹¨ν•œ κ΅¬ν˜„ λ¬Έμ œμž…λ‹ˆλ‹€.
NN 이 주어지면 NN λΆ€ν„° 00 κΉŒμ§€ 좜λ ₯ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€.

πŸ“Œ A - Code

N=int(input())

while N!=-1:
    print(N)
    N-=1

πŸ“Œ B - Sandwich Number

본문 링크

이번 λŒ€νšŒμ—μ„œ 많이 λ§žμ™œν‹€μ„ ν•œ λ¬Έμ œμž…λ‹ˆλ‹€.
저도 2λ²ˆν‹€λ¦¬κ³  λ§žμ€ λ¬Έμ œμž…λ‹ˆλ‹€.

λ¬Έμ œλŠ” κ°„λ‹¨ν•©λ‹ˆλ‹€. 1~10 길이의 λ¬Έμžκ°€ μ£Όμ–΄μ‘Œμ„λ•Œ
κ°€μž₯ μ™Όμͺ½μ— λŒ€λ¬Έμžκ°€ 있고 , κ·Έλ‹€μŒμ— 100000~999999 의 μˆ«μžκ°€ 있고 κ·Έ λ‹€μŒμ— λŒ€λ¬Έμžκ°€ μžˆλŠ” λ¬ΈμžμΈμ§€ μ•„λ‹Œμ§€ νŒλ³„ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€.

일단 μ €λŠ” 이 λ¬Έμ œμ—μ„œ 쑰건을 μ΄μ‘±ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ¬Έμžμ—΄μ˜ 길이가 항상 8 이 λ˜μ–΄μ•Όν•œλ‹€κ³  μƒκ°ν–ˆμŠ΅λ‹ˆλ‹€.
그리고 κ°€μž₯ μ™Όμͺ½ λ¬Έμžμ™€ κ°€μž₯ 였λ₯Έμͺ½λ¬Έμžκ°€ λŒ€λ¬ΈμžμΌλ•Œ μ€‘κ°„μ˜ λ¬Έμžκ°€ int ν˜•μœΌλ‘œ λ³€ν™˜μ‹œ 100000~999999 인지 νŒλ³„ν•΄μ£Όμ—ˆμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ μ‚¬λžŒλ“€μ΄ κ°€μž₯ 많이 ν‹€λ¦°μ΄μœ λŠ” 파이썬의 intν˜• λ³€ν™˜μž…λ‹ˆλ‹€.

String="0100000" 이 문자λ₯Ό int 둜 λ°”κΎΈλ©΄ μ–΄λ–»κ²Œ λ κΉŒμš”?
μ‹ κΈ°ν•˜κ²Œλ„ 100000100000 이 λ‚˜μ˜΅λ‹ˆλ‹€. 즉 νŒŒμ΄μ¬μ€ str μžλ£Œν˜•μ„ int 둜 λ³€ν™˜ν• λ•Œ μ•žμ— 0이 있으면 κ·Έλƒ₯ λ¬΄μ‹œν•΄μ€λ‹ˆλ‹€.
λ”°λΌμ„œ λ¬Έμžμ—΄ 길이가 8이 μ•„λ‹ˆλΌλŠ” 쑰건을 μ“°μ§€μ•Šκ³  λ‹¨μˆœνžˆ κ°€μž₯μ™Όμͺ½λ¬Έμžμ—΄κ³Ό κ°€μž₯였λ₯Έμͺ½λ¬Έμžμ—΄μ΄ λŒ€λ¬Έμžμ΄λ©΄ μ€‘κ°„μ˜ 문자λ₯Ό int ν˜•μœΌλ‘œ λ³€ν™˜ν• μ‹œ A0100000A λΌλŠ” λ°˜λ‘€κ°€ μƒκΉλ‹ˆλ‹€.

πŸ“Œ B - Code

S=input()

answer=0
if len(S)==8:
    if 65<=ord(S[0])<=90 and 65<=ord(S[-1])<=90:
        S=S[1:]
        S=S[:-1]
        try:
            S=int(S)
            if 100000<=S<=999999:
                answer=1
        except:
            print("No")
            exit(0)

if answer==1:
    print("Yes")
else:
    print("No")

πŸ“Œ C - Circular Playlist

본문 링크

NN 은 μž…λ ₯의 길이 TT λŠ” μ‹œκ°„μ΄ μ£Όμ–΄μ§‘λ‹ˆλ‹€.
리슀트의 값은 λ…Έλž˜ ν•˜λ‚˜λ₯Ό λ“£λŠ”λ° κ±Έλ¦¬λŠ” μ‹œκ°„μ„ μ˜λ―Έν•©λ‹ˆλ‹€.

TT κ°€ 600 μ΄ˆκ°€ μΌλ•Œ 리슀트의 λ…Έλž˜λ₯Ό 순차적으둜 λ“£μŠ΅λ‹ˆλ‹€.
180 μ΄ˆκ°€ μ†Œλͺ¨λ˜λŠ” λ…Έλž˜λ₯Ό λ“£κ³  240 μ΄ˆκ°€ ν•„μš”ν•œ λ…Έλž˜λ₯Ό λ“£κ³  120 μ΄ˆκ°€ ν•„μš”ν•œ λ…Έλž˜λ₯Ό λ“£μŠ΅λ‹ˆλ‹€.
λ§Œμ•½ μ΄λ•Œ ν•œλ°”ν€΄λ₯Ό λ‹€ λ“€μ—ˆμŒμ—λ„ TT 값이 λ‚¨λŠ”λ‹€λ©΄ λ‹€μ‹œ μ²˜μŒλΆ€ν„° λ“£μŠ΅λ‹ˆλ‹€.
λ”°λΌμ„œ ν•œλ°”ν€΄λ₯Ό λ‹€ 돌면 540 μ΄ˆκ°€ κ±Έλ € TT λŠ” 60 이 되고 첫번째 λ…Έλž˜μ—μ„œ TT λŠ” 0 이 λ˜λ²„λ¦½λ‹ˆλ‹€.
κ·ΈλŸ¬λ―€λ‘œ 좜λ ₯은 인덱슀 μœ„μΉ˜ 1 κ³Ό λ…Έλž˜λ₯Ό λ“£κΈ° μ‹œμž‘ν•΄μ„œ TT κ°€ 0 μ΄λ λ•ŒκΉŒμ§€ μ‹œκ°„ - 60 이 좜λ ₯ν•˜κ²Œ λ©λ‹ˆλ‹€.

λ¬Έμ œμ—μ„œ λ²”μœ„λ₯Ό 보자면

  • 1≀N≀1051≀N≀10^5 , 1≀T≀1011≀T≀10^18^8 , 1≀Ai≀1091≀A_i≀10^9

μž…λ‹ˆλ‹€.
즉 완전탐색을 ν•˜λ©΄ μ‹œκ°„μ΄ˆκ³Όκ°€ λ‚  수 μžˆμŠ΅λ‹ˆλ‹€.
κ°„λ‹¨ν•˜κ²Œ μƒκ°ν•΄λ³΄λ‹ˆκΉ ꡳ이 맀번 돌 ν•„μš”κ°€ μ—†κ³  , TT 에닀가 리슀트의 합을 λ‚˜λˆˆ λ‚˜λ¨Έμ§€λ₯Ό κ΅¬ν•˜λ©΄ O(N)O(N) 으둜 TT κ°€ 0이 λ˜λŠ” 지점을 μ°Ύμ„μˆ˜ μžˆμŠ΅λ‹ˆλ‹€.

πŸ“Œ C - Code

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

L=list(map(int,input().split()))
K=sum(L)

T=T%K

for i in range(N):
    if T>=L[i]:
        T-=L[i]
    else:
        print(i+1 ,T)
        break

βœ… ν›„κΈ°

Atcoder μ—μ„œ Dλ²ˆμ€ ν•œλ²ˆ ν’€μ–΄λ³΄κ³ μ‹Άμ—ˆλŠ”λ° μ‹œκ°„μ΄ 많이 μžˆμ—ˆμŒμ—λ„ 풀지λͺ»ν•œκ²Œ 쑰금 μ•„μ‰½μŠ΅λ‹ˆλ‹€.
μ²˜μŒμ— μ‹œκ°„μ΄ˆκ³Όλ₯Ό λ°›μ•„μ„œ 리슀트의 λ‚˜λ¨Έμ§€ 값듀을 ν™œμš©ν•΄λ³Όλ €κ³  μ ‘κ·Όμ€ν–ˆμ§€λ§Œ DPλ₯Ό μ‚¬μš©ν•˜μ§€λŠ” μ•Šμ•˜μŠ΅λ‹ˆλ‹€.
κ·Έλž˜λ„ μ΄λ²ˆμ—λŠ” A~Cλ²ˆμ„ 빨리 ν’€μ–΄μ„œ λ‹€λ₯Έλ¬Έμ œλ₯Ό ν’€ μ‹œκ°„μ΄ 1μ‹œκ°„ λ„˜κ²Œμžˆμ—ˆμŠ΅λ‹ˆλ‹€.

이번 λŒ€νšŒμ— μ°Έκ°€ν•˜μ—¬ λ ˆμ΄νŒ…μ΄ 43 이 μ˜¬λžμŠ΅λ‹ˆλ‹€. BrownBrown 을 λ‹¬μ„±ν• λ•ŒκΉŒμ§€ μ—΄μ‹¬νžˆ λŒ€νšŒμ°Έμ—¬λ₯Ό ν•΄λ³Όμƒκ°μž…λ‹ˆλ‹€.

profile
μšΈμ‚°λŒ€ν•™κ΅ ITμœ΅ν•©ν•™λΆ€ 22ν•™λ²ˆ

0개의 λŒ“κΈ€