본문 바로가기

Python/code problem

[sw expert academy] 1220. [S/W 문제해결 기본] 5일차 - Magnetic

https://swexpertacademy.com/main/main.do

 

SW Expert Academy

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

swexpertacademy.com

 

N= 4일 때 예시를 하나 만들어 그걸 토대로 풀었다.

 

list를 이용해 풀었는데 열(행열할 때 열)로 풀면 어렵기 때문에 행으로 바꿨다.

예를 들어

N
0 1
2 1
S

N 0 2 S
1 1

로 바꿔 풀었다.

 

내 코드는 아래와 같다.

  • 63,524 kb메모리
  • 243 ms실행시간
for t in range(1,11):
    N = int(input())
    it_arr = []
    for i in range(N):
        it_arr.extend(input().split())
    
    re_arr = []
    for i in range(N):
        p = [it_arr[i+N*k]for k in range(N)]
        re_arr.append(p)
    
    for k in range(N):
        for i in range(N):
            if re_arr[k][i]=='1':
                break
            elif re_arr[k][i]=='2':
                re_arr[k][i]='0'

    for k in range(N):
        for i in range(N-1,-1,-1):
            if re_arr[k][i]=='2':
                break
            elif re_arr[k][i]=='1':
                re_arr[k][i]='0' 

    for k in range(N):
        for i in range(re_arr[k].count('0')):
            re_arr[k].remove('0')

    result = 0
    for k in range(N):
        for i in range(len(re_arr[k])-1):
            if re_arr[k][i] == '1'and re_arr[k][i+1] == '2':
                result+=1

    print("#{} {}".format(t,result))

 

이번 문제는 좀 어렵다.

그래도 중간에 오류 없이 차근차근 잘 푼 것 같아 기분 좋다.