여태 코드업 공부는 우리밋의 유튜브 강의를 보며 우리밋이 만든 코드업 기초 100제 문제집을 사용했습니다.
우리밋이 2차원 배열을 쉽게 이해하기 위해 보너스 문제를 만들었으며 이에 대한 풀이를 해본 글입니다.
해당 문제는 이차원 배열의 개념과 원리를 파악하기 위해 "우리밋"이 직접 만든 문제임을 알려드립니다.
x축과 y축의 개념을 머릿 속에서 자유롭게 조작할 수 있도록 훈련하기 위해 만든 문제입니다.
이 점을 기억하시고 아래 문제를 푸시길 바랍니다.
해당 문제를 배포하시거나 외부에서 사용하실 때는 "우리밋"을 한번씩만 거론 부탁드리겠습니다.
구독만 해주신다면 그것으로 충분합니다.
ps. "내 미래"가 해당 문제 이름입니다. 참고로 전 다녀왔습니다. :)
훈련병인 철수는 교관의 지시에 따라야한다.
교관은 "좌로 1보, 하로 2보 가!"와 같이 좌,우,상,하로 이동할 것을 명령한다.
철수의 현재 위치가 입력으로 주어질 때 교관의 명령대로 이동한 위치는 어디일까?
제한 조건
1. 철수의 현재 위치는 첫 입력 값으로 공백을 두고 입력된다.
ex) 1 1 => (0, 0), 5 4 => (4, 3)
2. 훈련소의 전체 공간 크기는 5*5 이다.
3. 교관이 지시한 명령은 절대 훈련소 공간을 벗어나지 않는다.
4. 좌는 왼쪽, 우는 오른쪽, 상은 위쪽, 하는 아래쪽으로 한다.
5. 입력은 좌,우,상,하의 순서대로 공백을 두고 입력된다.
ex) 3 2 3 3 => 좌로 2보, 우로 2보, 상으로 3보, 하로 3보 이동.
입력
3 3
1 2 1 3
출력
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 1 0
<풀이>
더보기
내가 쓴 풀이
# first_position_x, first_position_y = int(input().split())
place = ([[0 for _ in range(5)] for _ in range(5)])
print(*place)
어떻게 출력 형태로 만드는지 모르겠다,,,
감을 못 잡겠어서 여기까지 쓰다가 강의 보기로 함😥
강의 풀이
import numpy as np # 2차원 배열을 보기 쉽게 출력하기 위해 라이브러리 사용
cur = tuple(map(int, input().split())) # 현재 위치, tuple로 감싸는 이유: map으로는 인덱스로 접근이 불가능하고, list가 아닌 tuple을 사용한 이유는 현재값은 변하지 않을 것이기 때문에
lft, rgt, up, down = map(int, input().split()) # 상하좌우 입력값, 위와 다르게 tuple로 감싸지 않는 이유: 위는 하나에 변수에 map객체로 담은 거고 이 코드는 여러 변수에 담기 때문에 알아서 언패킹하며 변수에 담기 때문이다.
coords = np.zeros((5,5), dtype = int) # 5,5를 int형으로 0을 채움(dtype=int 적지 않으면 소수점으로 채워짐(0.)
move = (cur[0] -up +down, cur[1] -lft +rgt) # x,y 를 입력한 값에 맞게 계산함
coords[move[0] -1][move[1] -1] = 1 # move[0] = cur[0] -up +down, move[1] = cur[1] -lft +rgt, -1씩 하는 이유: 훈련소 크기는 5*5지만 인덱스상 [5]가 아니라 [4]이기 떄문
for crd in coords:
print(*crd) # 출력값 형태
<풀이 비교>
...
강의를 보길 잘했다. 넘 어렵쓰...
강의에서는 numpy를 썼는데 굳이 안 써도 풀 수 있다고 한다.
cur = tuple(map(int, input().split()))
lf, rgt, up, down = map(int, input().split())
coords = [[0 for _ in range(5)] for _ in range(5)]
move = ( cur[0] -up +down, cur[1] -lf +rgt )
coords[move[0] -1][move[1] -1] = 1
for crd in coords:
print( *crd )
이해하려면 몇 번 더 보고, 몇 번 더 풀어봐야 할 것 같다🙃
'Python > CodeUp' 카테고리의 다른 글
코드업 기초 100제 97번 - 바둑판에 십자 뒤집기 (0) | 2021.11.28 |
---|---|
코드업 기초 100제 96번 - 바둑판에 흰 돌 놓기 (0) | 2021.11.28 |
코드업 기초 100제 95번 - 이상한 출석 번호 부르기3 (0) | 2021.11.26 |
코드업 기초 100제 94번 - 이상한 출석 번호 부르기2 (0) | 2021.11.26 |
코드업 기초 100제 93번 - 이상한 출석 번호 부르기1 (0) | 2021.11.26 |