[코드업] Python 기초 100제 6096~6098번
참고: https://codeup.kr/problemsetsol.php
✔️ 코드업 파이썬 기초 100제 [6096번]
그 놈의 영일이는 또 바둑을 이상한 데에 쓰려고 한다.
문제 자체도 잘 이해를 해야하는데,
주어진 좌표의 가로를 쭉 뒤집고
세로를 쭉 뒤집는 결과에 따라서
0과 1을 뒤집어주면 된다.
data = [input().split() for _ in range(19)]
n = int(input())
for i in range(n):
x, y = map(int, input().split())
for j in range(19):
if data[x-1][j] == '0':
data[x-1][j] = '1'
else:
data[x-1][j] = '0'
if data[j][y-1] == '1':
data[j][y-1] = '0'
else:
data[j][y-1] = '1'
for i in range(19):
for j in range(19):
print(data[i][j], end=' ')
print()
풀었던 코드는 다음과 같은데,
리스트 컴프리헨션으로 입력받은 것을
2차원 배열 형태로 만들어주고 x와 y를 map으로 받는다.
그리고 받은 좌표에 따라서 0은 1로, 1은 0으로
뒤집어서 출력하면 된다.
✔️ 코드업 파이썬 기초 100제 [6097번]
이번에 영일이가 뽑기를 또 바둑판 형태로
무언가를 만들어보고 싶어 한다.
해당 문제는 받은 숫자 만큼의 배열을 만들고,
가로와 세로일 때 막대의 길이를 1로 채워주는 문제다.
h, w = map(int, input().split())
n = int(input())
data = [[0 for _ in range(w)] for _ in range(h)]
for i in range(n):
l, d, x, y = map(int, input().split())
for j in range(l):
if d == 0:
data[x-1][(y-1)+j] = 1
if d == 1:
data[(x-1)+j][y-1] = 1
for i in range(h):
for j in range(w):
print(data[i][j], end=' ')
print()
h와 w 만큼의 리스트 컴프리헨션 형태로 2차원 배열을 만들고,
받을 수 있는 값들을 map을 돌면서 받아준다.
문제에서는 (1, 1)부터 시작하지만
우리는 인덱스 0부터 시작해야하기 때문에
x와 y에 각각 1을 뺀 만큼의 인덱싱을 해주어야 한다.
그리고나서 출력하면 된다.
참고로 막대 길이만큼을 돌아야하기 때문에,
for문의 범위는 l로 설정해주면 된다.
✔️ 코드업 파이썬 기초 100제 [6098번]
코드업 파이썬 기초 100제의 마지막 문제이다.
어김없이 영일이가 바둑판 형태의 미로 상자를 가져왔다.
글보다는 입력과 출력 예시를 살펴보면 쉬운데,
가장자리는 1로 벽이 세워져있고
중간에 1로 막힌 부분은 갈 수 없다.
가로가 1로 막혀있다면 아래로,
막혀있지 않다면 9로 채워주게 되고
2를 만났을 때 해당 2자리를 9로 채워주면서
미로를 탈출하게 된다.
data = [input().split() for _ in range(10)]
x, y = 1, 1
breaks = 0
for i in range(x, 10):
if breaks == 1:
break
for j in range(y, 10):
if data[i][j] == '2':
data[i][j] = '9'
breaks += 1
break
if data[i][j] == '0':
data[i][j] = '9'
elif data[i][j] == '1':
x = j-1
y = j-1
break
for i in range(10):
for j in range(10):
print(data[i][j], end=' ')
print()
조금 코드가 더럽고 효율적이지 못하긴 한데,,
아무튼 while을 사용하지 않고 2중 for문 형태로 풀었다.
x와 y 좌표는 (1,1)부터 시작하여 미로를 시작하기 때문에
기본 값으로 넣어주고 반복문 탈출을 위해 breaks 변수를 0으로 초기화하였다.
나머지는 각 해당하는 좌표가 0이면 9를,
1이면 밑으로 내려가기 위해 x와 y 값에 j-1만큼을 주고
2이면 해당 좌표는 9로 주고 2중 반복문을 탈출하는 형태로
코드를 작성하였다.
다음에는 while을 사용하여
탈출을 위한 변수없이 한방에 탈출하는 코드로
리팩토링 해야겠다,,
✔️ 코드업 파이썬 기초 100제 Clear!
파이썬 기초 100제 Clear❗
화이팅 💪