Algorithm/SWEA

[SWEA] [S/W 문제해결 기본] 5일차 - Magnetic (python)

DongKeun2 2022. 2. 17. 21:18

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14hwZqABsCFAYD&categoryId=AV14hwZqABsCFAYD&categoryType=CODE&problemTitle=1220&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

너무 쉬운 문제라 무조건 맞을거라 생각하고 안돌려보고 바로 제출했는데 fail...
뭐가 틀렸는지 10분 동안 논리 구현 부분만 노려보며 고민해도 못 찾았는데
알고보니 루프를 한 번 덜 돌았네요.🥲

 

🔥 작성 코드

T = 10

for test_case in range(1, T):
    N = int(input())
    arr = [list(map(int, input().split())) for _ in range(N)]

    result = 0
    for i in range(N):
        cnt = 0
        for j in range(N):
            if arr[j][i] == 1:
                if cnt == 0:
                    cnt = 1
                if cnt == 2:
                    cnt = 1
            elif arr[j][i] == 2:
                if cnt == 1:
                    cnt = 2
                    result += 1
            else:
                if cnt == 2:
                    cnt = 0

    print(f'#{test_case} {result}')

 

테스트 케이스를 하나 덜 입력해서 10개 중 9개 정답...

 

 

🔥 정답 코드 (🌪️62,204kb 202ms)

T = 10

for test_case in range(1, T+1):
    N = int(input())
    arr = [list(map(int, input().split())) for _ in range(N)]

    result = 0
    for i in range(N):
        cnt = 0
        for j in range(N):
            if arr[j][i] == 1:
                if cnt == 0 or cnt == 2:
                    cnt = 1

            elif arr[j][i] == 2:
                if cnt == 1:
                    cnt = 2
                    result += 1
            else:
                if cnt == 2:
                    cnt = 0

    print(f'#{test_case} {result}')

 

  1. 위 쪽은 N극, 아래쪽은 S극이기 때문에 N극 아래에 S극이 온다면 교착상태가 하나 늘어납니다.
  2. 다 무시하고 N먼저 찾고, 찾았으면 다시 전부 무시하며 S극을 찾습니다.
  3. 한 쌍을 찾게 되면 결과값에 1을 더해주고 다시 2~3을 반복합니다.