AtCoder Beginner Contest 282

김현준·2022년 12월 17일
0

Atcoder

목록 보기
2/3

2022-12-17 21:00 부터 22:40 까지 총 100분간 진행하였습니다.

이번에도 A,B,C까지는 빠르게 풀었지만 D번이 이분그래프 문제였습니다.
백준에 이분그래프 문제가 존재하지만 풀어본적이없어서 접근을 못했습니다.

D번좀 풀어보고싶네요

📌 A - Generalized ABC

본문 링크

간단한 문제입니다.
KK 값의 크기에 따라 A부터 대문자 영어를 순서대로 출력하면됩니다.
아스키코드를 사용하여 풀었습니다.

📌 A - Code

N=int(input())

for i in range(N):
    print( chr(65+i) , end="")

📌B - Let's Get a Perfect Score

본문 링크

입력

  • 5 5
    ooooo
    oooxx
    xxooo
    oxoxo
    xxxxx

다음과 같은 입력이 주어졌을때
두개의 행(가로줄)을 선택했을때 전부다 만점을 맞는 모든 경우의 수를 구하는 문제입니다.

예를들면 3번과 4번을 고르면 1,3,4,5는 맞출수 있지만 2번째는 둘다 X 이기 때문에 불가능합니다.

따라서 (1,2) , (1,3) , (1,4) , (1,5) , (2,3) 이 가능하므로 답은 5 입니다.

브루트포스 알고리즘을 사용하여 이중반복문을 사용했습니다.

📌 B - Code

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

L=[ list(input()) for _ in range(N) ]
answer=0
for i in range(N-1):

    dp=[0]*M
    for j in range(M):
        if L[i][j]=="o":
            dp[j]=1

    for _ in range(i+1,N):
        dp2=copy.deepcopy(dp)
        for k in range(M):
            if L[_][k]=="o":
                dp2[k]=1
        if dp2.count(0)==0:
            answer+=1
print(answer)

📌 C - String Delimiter

본문 링크

입력

  • 8
    "a,b"c,d

출력

  • "a,b"c.d

문자열 문제입니다. 만약 문자열에서 , 가 있을때
" " 안에 있지않으면 . 으로 바꿔줍니다.
따라서 출력에 첫번째 ," " 안에 있으므로 그대로 출력되지만
두번째 ," "안에 없으므로 . 으로 고쳐서 출력해줍니다.

단순하게 " 문자가 한번 들어오면 그대로 냅두고 2번 들어오면 바꿔주는 식으로 풀었습니다.

📌 C - Code

N=int(input())
S=list(input())
check=0

for i in range(len(S)):
    if S[i]=="," and check==0:
        S[i]='.'
    if S[i]=='"':
        if check==1:
            check=0
        else:
            check=1

S=''.join(S)
print(S)

✅ 후기

빨리는 못풀었지만 그래도 TLE는 발생하지 않았습니다.
문제가 쉬워보이더라도 그냥 대충 코드를 작성하고 제출해서 틀리는거보다
제출하기 전에 한번더 생각을 하고 반례를 생각한 다음에 제출하는 습관을 중요한거같습니다.

이번에도 A,B,C를 무난히 풀어서 다행이네요.
다음에는 가능하면 D 번도 도전해보겠습니다.

profile
울산대학교 IT융합학부 22학번

0개의 댓글