개발/코테

[코드트리 조별과제] 5주차 - 배열 기록

su-mmer 2024. 8. 18. 22:29
728x90

이번 주 가장 오래 걸렸던 문제

https://www.codetree.ai/missions/5/problems/correlation-between-shaking-hands-and-infectious-diseases2?&utm_source=clipboard&utm_medium=text

 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai

 

N, K, P, T = map(int, input().split())  # n명, k번의 악수, 처음 걸린 p, 총 악수 t번
arr_n = [0 for _ in range(101)]  # 개발자 번호
arr_t = [[0 for _ in range(3)] for _ in range(251)]  # 악수 list
arr_k = [0 for _ in range(101)]  # 감염 횟수 몇 번 남았니

# 악수한 시간이 랜덤으로 들어오므로 저장하기 위한 list 생성
for i in range(T):
    arr_t[i][0], arr_t[i][1], arr_t[i][2] = map(int, input().split())
# 악수한 시간 오름차순 sort
arr_t.sort()

# 첫 번째 감염자
arr_n[P] = 1
# 감염 기록
for elem in arr_t:
    if elem[0] != 0:
        _, x, y = elem[0], elem[1], elem[2]  # n초, x개발자, y개발자
        if arr_n[x] == 1 and arr_k[x] < K:  # x개발자 보균자, 횟수 남음
            if arr_n[y] == 0:  # y 감염 안 됨
                arr_n[y] = 1  # y 감염시킴
            else:
                arr_k[y] += 1  # y 악수 횟수 + 1
            arr_k[x] += 1  # x 악수 횟수 +1
        elif arr_n[y] == 1 and arr_k[y] < K:  # y개발자 보균자, 횟수 남음
            if arr_n[x] == 0:  # x 감염 안 됨
                arr_n[x] = 1  # x 감염시킴
            else:
                arr_k[x] += 1  # x 악수 횟수 +1
            arr_k[y] += 1  # y 악수 횟수 +1

for elem in arr_n[1:N+1]:
    print(elem, end='')

테스트 케이스를 쪼개서 if문 나누는 부분이 약한 것 같다.

 

해당 커리큘럼 시작한 지 한 달 정도 되었는데, 53%를 했다.

두 달은 잡아야겠구나.. 학습 소요시간 2~6개월 권장하길래 너무나도 당당하게 한 달 내로 조져주겠다고 생각했지만 항상 조져지는 건 나였고..

저번 주랑 저저번주에 거의 못 풀어서 부진해서 그런가 조금 아쉽다.

대따 재밌는데 하루종일 틀어박혀서 문제만 풀고싶다ㅋㅋ ㅋ ㅋㅋㅋㅋ

그리고 다음 주면 벌써 코드트리 조별과제가 끝난다 ㅠㅠ

무료이용권 너무 좋은데... 하지만 괜찮다. 신용카드로 해결하면 된다. ㅎ

이상 참여자가 없어서 5주째 1등 당하는 '나'.

728x90