kigahy / SIMPLER_AlgorithmStudy

My first study group at SSAFY with Python, 2024/07~2024/09 end.
0 stars 2 forks source link

[5week] 나영->진문 코드리뷰 #26

Open skdud5126 opened 3 months ago

skdud5126 commented 3 months ago

5주차 나영 -> 진문 코드리뷰


[12712] 파리퇴치 3

# 진문님 코드 
nx = i + (dx*k)
ny = j + (dy*k)

# 코드 길이를 줄이기 위한 꿀팁입니다!  이렇게하면 밑에부분까지해서 2줄이 줄여지겠죠?? ㅎㅎ
nx, ny = i + (dx*k) , ny = j + (dy*k)

[1860] 진기의 최고급 붕어빵

# 최초의 붕어빵이 생산되기 전에 손님이 오는 경우 early return
    if M > min(arrive_arr):
        print(f'#{test_case} Impossible')
        continue
T = int(input())  # 테스트 케이스 수 T

for case in range(1, T+1):
    N, M, K = map(int,input().split())  # N 명의 손님 / M초마다 K개의 붕어빵 생성
    arrive_time = list(map(int,input().split()))  # 손님 도착 시간

    boongs = [0] * (max(arrive_time)+1)   # 붕어빵 만든 현황 표시 위함
    res = 'Possible'

    for i in range(1, len(boongs)):   # [0, 0, 2, 2, 4]
        boongs[i] = i//M * K

    for customer in arrive_time:
        for i in range(customer,len(boongs)):  # 도착시간때마다 손님이 한개씩 사갔다고 가정하여 한개씩 뺴줌
            boongs[i]+= -1

    for arrive in arrive_time:
        if boongs[arrive] < 0:   # 붕어빵 현황에 0보다 작으면 손님 구매 실패했음
            res = 'Impossible'
            break

    print(f'#{case} {res}')

[10580] 전봇대


[9489] 고대유적

T = int(input())  # 테스트 케이스 수

dxy = [[1,0],[0,1]]  # 우, 하

for case in range(1, T+1):
    N, M = map(int,input().split())
    arr = [list(map(int,input().split())) for _ in range(N)]  # NXM 배열 입력
    res = 0

    for row in range(N):
        for col in range(M):
            if not arr[row][col]:  # 유물없음
                continue
            for dx, dy in dxy:
                cnt = 1  # 유물이 있다는거
                for k in range(1, max(N,M)):   # N,M이 뭐가 큰지 모르기때문에 둘 중 max값 가져옴
                    nx, ny = row + dx*k , col + dy*k
                    if nx < 0  or nx >= N or ny < 0 or ny >= M or arr[nx][ny] == 0:  # 범위 벗어나거나 유물이 없거나
                        break
                    if arr[nx][ny]:  # 유물있으면 유물갯수 더해줌줌
                        cnt+=1
                if res < cnt:   # 최대값 갱신
                    res = cnt

    print(f'#{case} {res}')

[3499] 퍼펙트 셔플

for case in range(1, T+1):
    N = int(input())   # 카드 개수
    card = list(input().split())  # 셔플 할 카드 리스트

    res = []  # 셔플한 결과 담아줄 리스트
    for i in range(N//2+(N%2)):   # 홀수 일때도 가능
        res.append(card[i])
        if N//2+(N%2) + i < N:  # 범위 벗어나는지 아닌지 확인
            res.append(card[N//2+(N%2) + i])

    print(f'#{case}', *res)

5주차 나영 -> 진문 코드리뷰를 마치며...

jinmoon23 commented 3 months ago

쭉 읽으면서 2~3번정도 피식잼 포인트들이 있어서 재밌게 리뷰 읽었습니다 ㅎㅎ 저도 리뷰 진행하면서 다른분들 코드 볼 때마다 느끼지만 클린한 코드는 확실히 논리적인 부분에서의 이해와 코드에 대한 접근성 자체를 높여주는 것 같습니다. 추천해주신 클린코드를 위한 방법들 적극 활용해서 더 깔끔한 코드를 만들기 위해 노력하겠습니다!!

나영님도 IM 합격 정말 축하드리고 A형과 B형 박살까지 같이 힘내봅시다 !! ㅎㅎ