반응형
Codeup 기초 파이썬 100제 중 비교적 어려웠던 문제
문제번호: 6091
입력과 출력조건은 위와 같고 3 가지 변수에 대한 최소 공배수를 구하는 문제이다. 당연히 math 임포트해서 풀었는데 정확하게 나오는데 사이트에선 틀린 답안이라고 나와서 직접 만들었다.
def gcd(a, b):
while(b != 0):
r = a % b
a = b
b = r
return a
def lcm(a, b):
return a*b / gcd(a,b)
def main():
a, m, d = input().split()
a = int(a)
m = int(m)
d = int(d)
result = lcm(a, m)
result = int(lcm(result, d))
print(result)
if __name__ == '__main__':
main()
문제번호: 6095
이번 문제는 19*19 바둑판 위에 흰 돌을 올려놓는 문제이다. 따라서 좌표를 받은 후 값을 1로 변경한다. 또 똑같은 좌표를 받으면 continue 한다.
def main():
n = int(input())
d = [[0]*20 for i in range(20)]
for i in range(n):
x, y = input().split()
if d[int(x)][int(y)] == 1:
continue
d[int(x)][int(y)] += 1
for i in range(1, 20):
for j in range(1, 20):
print(d[i][j], end=' ')
print()
if __name__ == '__main__':
main()
문제번호: 6096
이번 문제는 위와 비슷하게 19*19 바둑판과 좌표 개수와 좌표를 입력받는다. 이후 십자 뒤집기를 한다. 예를 들어 좌표(10,10)을 받았을 경우, x=10인 경우와 y=10인 경우의 돌을 반전시키면 된다.
def main():
# 입력
d = [[0]*20 for i in range(20)]
for i in range(19):
a = input().split()
for j in range(19):
d[i][j] = int(a[j])
n = int(input())
for i in range(n):
x, y = input().split()
x = int(x) -1
y = int(y) -1
# 연산
for j in range(19):
if d[j][y] == 1:
d[j][y] = 0
else:
d[j][y] = 1
if d[x][j] == 1:
d[x][j] = 0
else:
d[x][j] = 1
# 출력
for i in range(19):
for j in range(19):
print(d[i][j], end=' ')
print()
if __name__ == '__main__':
main()
문제번호 : 6097
이번 문제는 실수 때문에 삽질을 조금 했다. 실수만 아니였으면 쉬운 문제였다.
def main():
# 입력
h, w = input().split()
h, w = int(h), int(w) #세로, 가로 초기화
a = [[0]*w for i in range(h)] #배열 생성
n = int(input())
for i in range(n):
l, d, x, y = input().split()
l, d, x, y = int(l), int(d), int(x)-1, int(y)-1
for j in range(l):
if d == 0:
a[x][j+y] = 1
else:
a[x+j][y] = 1
# 출력
for i in range(h):
for j in range(w):
print(a[i][j], end=' ')
print()
if __name__ == '__main__':
main()
문제번호: 6098
경로를 표시하는 문제인데 재밌었다.
def main():
a = [[0]*10 for i in range(10)] #배열 생성
for i in range(10): # 배열 입력
d = input().split()
for j in range(10):
a[i][j] = int(d[j])
check = True
i, j = 1, 1
while(check):
if(i+1 == 10):
break
if(a[i][j] == 2):
a[i][j] = 9
break
elif(a[i][j] == 0):
a[i][j] = 9
j = j+1
elif(a[i][j] == 1):
j = j-1
i += 1
# 출력
for i in range(10):
for j in range(10):
print(a[i][j], end=' ')
print()
if __name__ == '__main__':
main()
728x90
'C언어' 카테고리의 다른 글
C언어 입력과 출력 강의 및 연습문제 풀이 (0) | 2022.08.04 |
---|