Home 두 배열의 원소 교체 정렬 리스트
Post
Cancel

두 배열의 원소 교체 정렬 리스트

출처 : codeup 6096번

멍청하게 for문과 숫자를 착각해서 거진 2시간인가 맴돌았다.

전체 코드는 다음과 같다.

1
2
3
d=[0]*19
for i in range(0,19):
    d[i]=list(map(int, input().split()))

가장먼저 리스트를 입력하는 부분 그러니까 리스트안에 리스트를 만들면 된다고 생각하면 된다.

위에선 먼저 19칸의 리스트를 먼저 선언을 하고

첫번째 칸에다가 리스트를 넣고 두번째 칸에다가 리스트를 넣고 …총 0부터 18까지 19번 리스트를 반복해서 넣어주는데 이때 map함수와 list함수를 같이 쓰면 앤터를 칠때 까지 통째로 리스트로 만들어서 넣을 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
n = int(input())
for i in range(0, n):
    x,y = map(int,input().split())
    x-=1
    y-=1
    # 가로줄에 대한 변환 수행 0~18
    for j in range(0,19):
        d[x][j]=int(not bool(d[x][j]))
  
    # 세로줄에 대한 변환 수행 0~18
    for k in range(0,19):
        d[k][y]=int(not bool(d[k][y]))

일단 가장 먼저 반복횟수 n을 받고 range(0,n)하면 n번만큼 돌게 된다.

그리고 x와 y에다가 값을 집어 넣는데 예를 들어서 입력은 2,2라고 했지만 우리는 0부터 세기로 했으니 1을 뺀값을 가져온다.

그리고 for문안에 이중 for문인데 두개를 각가 들어간다.

즉 가로줄을 다 돌면 이어서 세로줄을 돈다는 뜻, 이거 이해를 못하고 한곳에다 집어넣고 왜 안되나 한참을 고민했다.

가로줄을 0부터 18번까지 돌면 세로줄을 0부터 18번까지 이어서 뒤집기를 시도하는데 여기서

값을 바꿔주는 것인데 불리언과 int를 가지고 재미있는 것을 해볼 수 있다

bool result

bool값을 int로 넣으면 True는 1을 False는 0을 반환하게 해주는데 여기에다가 not을 붙여 버리면 0은 1로 1은 0을 뱉어낸다. 이거를 이용해서 바로 사용 했다.

if else를 쓰면 못해도 4줄이 나오는데 불리언값을 이용하면 한줄이면 뚝딱

1
2
3
4
5
6
for i in range(0,19):
    for j in range(0,19):
        if j!=18:
            print(d[i][j],end=' ')
        else:
            print(d[i][j])

그리고 마지막 출력은 이중for문으로 대체했다. print문은 뒤에 end=’ ‘를 넣어주면 공백을 띄우고 다음을 출력하는데 없으면 바로 줄바꿈이 들어간다. 마지막(19번째)에 만 줄바꿈을 하게 저렇게 출력

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
d=[0]*19
for i in range(0,19):
    d[i]=list(map(int, input().split()))

n = int(input())
for i in range(0, n):
    x,y = map(int,input().split())
    x-=1
    y-=1
    # 가로줄에 대한 변환 수행 0~18
    for j in range(0,19):
        d[x][j]=int(not bool(d[x][j]))
  
    # 세로줄에 대한 변환 수행 0~18
    for k in range(0,19):
        d[k][y]=int(not bool(d[k][y]))
            
for i in range(0,19):
    for j in range(0,19):
        if j!=18:
            print(d[i][j],end=' ')
        else:
            print(d[i][j])

참 별거없는 코드인데 한번 착각하기 시작하니 시간을 왕창 잡아먹었다.

This post is licensed under CC BY 4.0 by the author.

Comments powered by Disqus.