CodeUp 6061 ~ 6098 풀이
6051 ~ 6060
6051 : [기초-비교연산] 정수 2개 입력받아 비교하기4(설명)(py)
두 정수(a, b)를 입력받아
a의 값이 b의 값과 서로 다르면 True 를, 같으면 False 를 출력하는 프로그램을 작성해보자.
a, b = map(int, input().split())
print(True if a != b else False)
0 1 True
6052 : [기초-논리연산] 정수 입력받아 참 거짓 평가하기(설명)(py)
정수가 입력되었을 때, True/False 로 평가해주는 프로그램을 작성해보자.
n = int(input())
print(bool(n))
0 False
6053 : [기초-논리연산] 참 거짓 바꾸기(설명)(py)
정수값이 입력될 때,
그 불 값을 반대로 출력하는 프로그램을 작성해보자.
n = int(input())
print(not bool(n))
1 False
6054 : [기초-논리연산] 둘 다 참일 경우만 참 출력하기(설명)(py)
2개의 정수값이 입력될 때,
그 불 값이 모두 True 일 때에만 True 를 출력하는 프로그램을 작성해보자.
a, b = map(int, input().split())
print(bool(a) and bool(b))
1 1 True
6055 : [기초-논리연산] 하나라도 참이면 참 출력하기(설명)(py)
2개의 정수값이 입력될 때,
그 불 값이 하나라도 True 일 때에만 True 를 출력하는 프로그램을 작성해보자.
a, b = map(int, input().split())
print(bool(a) or bool(b))
1 1 True
6056 : [기초-논리연산] 참/거짓이 서로 다를 때에만 참 출력하기(설명)(py)
2개의 정수값이 입력될 때,
그 불 값(True/False) 이 서로 다를 때에만 True 를 출력하는 프로그램을 작성해보자.
a, b = map(int, input().split())
print(True if bool(a) != bool(b) else False)
1 1 False
6057 : [기초-논리연산] 참/거짓이 서로 같을 때에만 참 출력하기(설명)(py)
2개의 정수값이 입력될 때,
그 불 값(True/False) 이 서로 같을 때에만 True 를 출력하는 프로그램을 작성해보자.
a, b = map(int, input().split())
print(True if bool(a) == bool(b) else False)
0 0 True
6058 : [기초-논리연산] 둘 다 거짓일 경우만 참 출력하기(py)
2개의 정수값이 입력될 때,
그 불 값(True/False) 이 모두 False 일 때에만 True 를 출력하는 프로그램을 작성해보자.
a, b = map(int, input().split())
print(not (bool(a) or bool(b)))
0 0 True
6059 : [기초-비트단위논리연산] 비트단위로 NOT 하여 출력하기(설명)(py)
입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자.
n = int(input())
print(~n)
2 -3
6060 : [기초-비트단위논리연산] 비트단위로 AND 하여 출력하기(설명)(py)
입력된 정수 두 개를 비트단위로 and 연산한 후 그 결과를 정수로 출력해보자.
a, b = map(int, input().split())
print(a & b)
3 5 1
6061 ~ 6070
6061 : [기초-비트단위논리연산] 비트단위로 OR 하여 출력하기(설명)(py)
입력된 정수 두 개를 비트단위로 or 연산한 후 그 결과를 정수로 출력해보자.
a, b = map(int, input().split())
print(a | b)
3 5 7
6062 : [기초-비트단위논리연산] 비트단위로 XOR 하여 출력하기(설명)(py)
입력된 정수 두 개를 비트단위로 xor 연산한 후 그 결과를 정수로 출력해보자.
a, b = map(int, input().split())
print(a ^ b)
3 5 6
6063 : [기초-3항연산] 정수 2개 입력받아 큰 값 출력하기(설명)(py)
입력된 두 정수(a, b) 중 큰 값을 출력하는 프로그램을 작성해보자.
단, 3항 연산을 사용한다.
a, b = map(int, input().split())
print(a if a >= b else b)
123 456 456
6064 : [기초-3항연산] 정수 3개 입력받아 가장 작은 값 출력하기(설명)(py)
입력된 세 정수 a, b, c 중 가장 작은 값을 출력하는 프로그램을 작성해보자.
단, 3항 연산을 사용한다.
a, b, c = map(int, input().split())
print((a if a <= c else c) if a <= b else (b if b <= c else (c if c <= a else a)))
3 -1 5 -1
6065 : [기초-조건/선택실행구조] 정수 3개 입력받아 짝수만 출력하기(설명)(py)
3개의 정수(a, b, c)가 입력되었을 때, 짝수만 출력해보자.
a, b, c = map(int, input().split())
if a % 2 == 0:
print(a)
if b % 2 == 0:
print(b)
if c % 2 == 0:
print(c)
1 2 4 2 4
6066 : [기초-조건/선택실행구조] 정수 3개 입력받아 짝/홀 출력하기(설명)(py)
3개의 정수(a, b, c)가 입력되었을 때, 짝(even)/홀(odd)을 출력해보자.
a, b, c = map(int, input().split())
if a % 2 == 0:
print('even')
else:
print('odd')
if b % 2 == 0:
print('even')
else:
print('odd')
if c % 2 == 0:
print('even')
else:
print('odd')
1 2 8 odd even even
6067 : [기초-조건/선택실행구조] 정수 1개 입력받아 분류하기(설명)(py)
0이 아닌 정수 1개가 입력되었을 때, 음(-)/양(+)과 짝(even)/홀(odd)을 구분해 분류해보자.
음수이면서 짝수이면, A
음수이면서 홀수이면, B
양수이면서 짝수이면, C
양수이면서 홀수이면, D
를 출력한다.
num = int(input())
if num < 0:
if num % 2 == 0:
print('A')
else:
print('B')
else:
if num % 2 == 0:
print('C')
else:
print('D')
-2147483648 A
6068 : [기초-조건/선택실행구조] 점수 입력받아 평가 출력하기(설명)(py)
점수(정수, 0 ~ 100)를 입력받아 평가를 출력해보자.
평가 기준
점수 범위 : 평가
90 ~ 100 : A
70 ~ 89 : B
40 ~ 69 : C
0 ~ 39 : D
로 평가되어야 한다.
score = int(input())
if 90 <= score <= 100:
print('A')
elif 70 <= score < 90:
print('B')
elif 40 <= score < 70:
print('C')
else:
print('D')
73 B
6069 : [기초-조건/선택실행구조] 평가 입력받아 다르게 출력하기(py)
평가를 문자(A, B, C, D, …)로 입력받아 내용을 다르게 출력해보자.
평가 내용
평가 : 내용
A : best!!!
B : good!!
C : run!
D : slowly~
나머지 문자들 : what?
char = input()
if char == 'A':
print('best!!!')
elif char == 'B':
print('good!!')
elif char == 'C':
print('run!')
elif char == 'D':
print('slowly~')
else:
print('what?')
A best!!!
6070 : [기초-조건/선택실행구조] 월 입력받아 계절 출력하기(설명)(py)
월이 입력될 때 계절 이름이 출력되도록 해보자.
월 : 계절 이름
12, 1, 2 : winter
3, 4, 5 : spring
6, 7, 8 : summer
9, 10, 11 : fall
month = int(input())
if 3 <= month <= 5:
print('spring')
elif 6 <= month <= 8:
print('summer')
elif 9 <= month <= 11:
print('fall')
else:
print('winter')
12 winter
6071 ~ 6080
6071 : [기초-반복실행구조] 0 입력될 때까지 무한 출력하기(설명)(py)
임의의 정수가 줄을 바꿔 계속 입력된다.
-2147483648 ~ +2147483647, 단 개수는 알 수 없다.
0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.
while True:
num = int(input())
if num == 0:
break
else:
print(num)
7 7 4 4 2 2 3 3 0
6072 : [기초-반복실행구조] 정수 1개 입력받아 카운트다운 출력하기1(설명)(py)
정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.
num = int(input())
while num != 0:
print(num)
num -= 1
5 5 4 3 2 1
6073 : [기초-반복실행구조] 정수 1개 입력받아 카운트다운 출력하기2(py)
정수(1 ~ 100) 1개가 입력되었을 때 카운트다운을 출력해보자.
num = int(input())
while num > 0:
num -= 1
print(num)
5 4 3 2 1 0
6074 : [기초-반복실행구조] 문자 1개 입력받아 알파벳 출력하기(설명)(py)
영문 소문자(a ~ z) 1개가 입력되었을 때,
a부터 그 문자까지의 알파벳을 순서대로 출력해보자.
c = ord(input())
s = ord('a')
while s <= c:
print(chr(s), end=' ')
s += 1
f a b c d e f
6075 : [기초-반복실행구조] 정수 1개 입력받아 그 수까지 출력하기1(py)
정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자.
num = int(input())
s = 0
while s <= num:
print(s)
s += 1
4 0 1 2 3 4
6076 : [기초-반복실행구조] 정수 1개 입력받아 그 수까지 출력하기2(설명)(py)
정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자.
n = int(input())
for i in range(n+1):
print(i)
4 0 1 2 3 4
6077 : [기초-종합] 짝수 합 구하기(설명)(py)
정수(1 ~ 100) 1개를 입력받아 1부터 그 수까지 짝수의 합을 구해보자.
n = int(input())
result = 0
for i in range(1, n+1):
if i % 2 == 0:
result += i
print(result)
5 6
6078 : [기초-종합] 원하는 문자가 입력될 때까지 반복 출력하기(py)
영문 소문자 ‘q’가 입력될 때까지
입력한 문자를 계속 출력하는 프로그램을 작성해보자.
while True:
char = input()
print(char)
if char == 'q':
break
x x b b k k d d l l q q
6079 : [기초-종합] 언제까지 더해야 할까?(py)
1, 2, 3 … 을 계속 더해 나갈 때,
그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지만
계속 더하는 프로그램을 작성해보자.
target = int(input())
result = 0
for i in range(1, target):
result += i
if result >= target:
break
print(i)
55 10
6080 : [기초-종합] 주사위 2개 던지기(설명)(py)
1부터 n까지, 1부터 m까지 숫자가 적힌 서로 다른 주사위 2개를 던졌을 때,
나올 수 있는 모든 경우를 출력해보자.
n, m = map(int, input().split())
for i in range(1, n+1):
for j in range(1, m+1):
print(i, j)
2 3 1 1 1 2 1 3 2 1 2 2 2 3
6081 ~ 6090
6081 : [기초-종합] 16진수 구구단 출력하기(py)
A, B, C, D, E, F 중 하나가 입력될 때,
1부터 F까지 곱한 16진수 구구단의 내용을 출력해보자.
(단, A ~ F 까지만 입력된다.)
dan = input()
for i in range(1, 16):
print('%s*%X=%X'% (dan, i, int(dan, 16)*i))
B B*1=B B*2=16 B*3=21 B*4=2C B*5=37 B*6=42 B*7=4D B*8=58 B*9=63 B*A=6E B*B=79 B*C=84 B*D=8F B*E=9A B*F=A5
6082 : [기초-종합] 3 6 9 게임의 왕이 되자(설명)(py)
친구들과 함께 3 6 9 게임을 하던 영일이는 잦은 실수 때문에 계속해서 벌칙을 받게 되었다.
3 6 9 게임의 왕이 되기 위한 369 마스터 프로그램을 작성해 보자.
n = int(input())
for i in range(1, n+1):
one = i % 10
if one == 3 or one == 6 or one == 9:
print('X', end=' ')
else:
print(i, end=' ')
29 1 2 X 4 5 X 7 8 X 10 11 12 X 14 15 X 17 18 X 20 21 22 X 24 25 X 27 28 X
6083 : [기초-종합] 빛 섞어 색 만들기(설명)(py)
빨강(r), 초록(g), 파랑(b) 각 빛의 가짓수가 주어질 때,
주어진 rgb 빛들을 섞어 만들 수 있는 모든 경우의 조합(r g b)과 만들 수 있는 색의 가짓 수를 계산해보자.
r, g, b = map(int, input().split())
for i in range(r):
for j in range(g):
for k in range(b):
print(i, j, k)
print(r * g * b)
2 2 2 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1 8
6084 : [기초-종합] 소리 파일 저장용량 계산하기(py)
녹음할 시간(초) s가 주어질 때,
필요한 저장 용량을 계산하는 프로그램을 작성해보자.
h, b, c, s = map(int, input().split())
MB = (h * b * c * s) / 8 / 1024 / 1024
print('%.1f MB' % MB)
44100 16 2 10 1.7 MB
6085 : [기초-종합] 그림 파일 저장용량 계산하기(py)
이미지의 가로 해상도 w, 세로 해상도 h, 한 픽셀을 저장하기 위한 비트 b 가 주어질 때,
압축하지 않고 저장하기 위해 필요한 저장 용량을 계산하는 프로그램을 작성해 보자.
w, h, b = map(int, input().split())
MB = (w * h * b) / 8 / 1024 / 1024
print('%.2f MB' % MB)
1024 768 24 2.25 MB
6086 : [기초-종합] 거기까지! 이제 그만~(설명)(py)
1, 2, 3 … 을 순서대로 계속 더해 합을 만드는데,
그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.
target = int(input())
result = 0
for i in range(1, target+1):
result += i
if result >= target:
break
print(result)
1 1
6087 : [기초-종합] 3의 배수는 통과(설명)(py)
1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되,
3의 배수인 경우는 출력하지 않도록 만들어보자.
n = int(input())
for i in range(1, n+1):
if i % 3 == 0:
continue
print(i, end=' ')
10 1 2 4 5 7 8 10
6088 : [기초-종합] 수 나열하기1(py)
시작 값(a), 등차(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때
n번째 수를 출력하는 프로그램을 만들어보자.
a, d, n = map(int, input().split())
result = a + (n - 1) * d
print(result)
1 3 5 13
6089 : [기초-종합] 수 나열하기2(py)
시작 값(a), 등비(r), 몇 번째인지를 나타내는 정수(n)가 입력될 때
n번째 수를 출력하는 프로그램을 만들어보자.
a, r, n = map(int, input().split())
result = a * r**(n-1)
print(result)
2 3 7 1458
6090 : [기초-종합] 수 나열하기3(py)
시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때,
n번째 수를 출력하는 프로그램을 만들어보자.
a, m ,d, n = map(int, input().split())
result = a * m**(n-1)
for i in range(n-2, -1, -1):
result += m**i
print(result)
1 2 3 4 15
a, m ,d, n = map(int, input().split())
for _ in range(1, n):
a = a * m + d
print(a)
1 -2 1 8 -85
6091 ~ 6098
6091 : [기초-종합] 함께 문제 푸는 날(설명)(py)
같은 날 동시에 가입한 3명의 사람들이 온라인 채점시스템에 들어와 문제를 푸는 날짜가
매우 규칙적이라고 할 때, 다시 모두 함께 문제를 풀게 되는 그날은 언제일까?
d1, d2, d3 = map(int, input().split())
# 유클리드 호제법(Euclidean Algorithm)
def gcd(a, b):
if a % b == 0:
return b
else:
return gcd(b, a % b)
gcd_1 = gcd(d1, d2) # d1과 d2의 최대공약수
lcm_1 = d1 * d2 // gcd_1 # d1과 d2의 최소공배수
gcd_2 = gcd(lcm_1, d3) # (d1과 d2의 최소공배수)와 d3의 최대공약수
lcm_2 = lcm_1 * d3 // gcd_2 # (d1과 d2의 최소공배수)와 3의 최소공배수
print(lcm_2)
2 4 8 8
이 문제를 풀기 위해 유클리드 호제법을 다시 보며 구현했으며, 세 자연수의 최소공배수를 구하기 위해서는 어떻게 하면 좋을까? 라고 여러번 생각했다. 그러다 두 자연수의 최소공배수를 먼저 구한 후 그 수와 나머지 수의 최소공배수를 구하면 될 것이라는 생각을 했다. 내가 기억하기론 중학교 수학에 배웠던 개념이었던 것 같다. 유클리드 호제법을 이용하여 구현하고 다른 풀이를 보니 꽤 심플해서 놀랐다.
d1, d2, d3 = map(int, input().split())
d = 1
while d % d1 != 0 or d % d2 != 0 or d % d3 != 0:
d += 1
print(d)
3 7 9 63
6092 : [기초-리스트] 이상한 출석 번호 부르기1(설명)(py)
출석 번호를 n번 무작위로 불렀을 때, 각 번호(1 ~ 23)가 불린 횟수를 각각 출력해보자.
n = int(input())
a = list(map(int, input().split()))
d = [0] * 23
for i in range(n):
d[a[i]-1] += 1
for i in range(len(d)):
print(d[i], end=' ')
10 1 3 2 2 5 6 7 4 5 9 1 2 1 1 2 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6093 : [기초-리스트] 이상한 출석 번호 부르기2(py)
출석 번호를 n번 무작위로 불렀을 때, 부른 번호를 거꾸로 출력해 보자.
n = int(input())
a = list(map(int, input().split()))
for i in range(n-1, -1, -1):
print(a[i], end=' ')
10 10 4 2 3 6 6 7 9 8 5 5 8 9 7 6 6 3 2 4 10
6094 : [기초-리스트] 이상한 출석 번호 부르기3(py)
출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호를 출력해 보자.
n = int(input())
a = list(map(int, input().split()))
sort_a = sorted(a)
print(sort_a[0])
10 10 4 2 3 6 6 7 9 8 5 2
6095 : [기초-리스트] 바둑판에 흰 돌 놓기(설명)(py)
바둑판(19 * 19)에 n개의 흰 돌을 놓는다고 할 때,
n개의 흰 돌이 놓인 위치를 출력하는 프로그램을 작성해보자.
P.S. 가독성을 위해 출력 결과에서 입력과 출력 사이에 공백 한 칸을 두었다.
n = int(input())
d = [[0] * 19 for _ in range(19)] # 바둑판 초기화
for _ in range(n):
x, y = map(int, input().split()) # x와 y를 입력받아
d[x-1][y-1] = 1 # 해당하는 좌표를 1로 할당
for x in range(19):
for y in range(19):
print(d[x][y], end=' ')
print()
5 1 1 2 2 3 3 4 4 5 5 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6096 : [기초-리스트] 바둑알 십자 뒤집기(py)
바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때,
n개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자.
P.S. 가독성을 위해 출력 결과에서 입력과 출력 사이에 공백 한 칸을 두었다.
# 입력받은 바둑판을 저장
a = [list(map(int, 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): # 먼저 가로 뒤집기
a[j-1][y-1] = int(not a[j-1][y-1])
for j in range(19): # 후에 세로 뒤집기
a[x-1][j-1] = int(not a[x-1][j-1])
# 출력
for x in range(19):
for y in range(19):
print(a[x][y], end=' ')
print()
0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 2 10 10 12 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 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 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
6097 : [기초-리스트] 설탕과자 뽑기(py)
격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l),
막대를 놓는 방향(d:가로는 0, 세로는 1)과
막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때,
격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자.
h, w = map(int, input().split()) # 세로(h), 가로(w) 입력
n = int(input()) # 막대의 개수(n) 입력
board = [[0] * w for _ in range(h)] # 입력받은 세로, 가로의 크기인 격자판 초기화
for _ in range(n): # 막대의 개수만큼 반복하며
l, d, x, y = map(int, input().split()) # 길이(l), 방향(d), 좌표(x, y)를 입력
for i in range(l): # 길이만큼 반복
if d: # 만약 입력받은 방향이 1, 즉 세로면
board[x+i-1][y-1] = 1 # 세로로 변화
else: # 만약 입력받은 방향이 0, 즉 가로면
board[x-1][y+i-1] = 1 # 가로로 변화
# 출력
for i in range(h):
for j in range(w):
print(board[i][j], end=' ')
print()
5 5 3 2 0 1 1 3 1 2 3 4 1 2 5 1 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 1
6098 : [기초-리스트] 성실한 개미(py)
영일이는 생명과학에 관심이 생겨 왕개미를 연구하고 있었다.
왕개미를 유심히 살펴보던 중 특별히 성실해 보이는 개미가 있었는데,
그 개미는 개미굴에서 나와 먹이까지 가장 빠른 길로 이동하는 것이었다.
개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직였다.
(오른쪽에 길이 나타나면 다시 오른쪽으로 움직인다.)
이에 호기심이 생긴 영일이는 그 개미를 미로 상자에 넣고 살펴보기 시작하였다.
미로 상자에 넣은 개미는 먹이를 찾았거나, 더 이상 움직일 수 없을 때까지
오른쪽 또는 아래쪽으로만 움직였다.
미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고,
먹이가 2로 주어질 때, 성실한 개미의 이동 경로를 예상해보자.
단, 맨 아래의 가장 오른쪽에 도착한 경우, 더 이상 움직일 수 없는 경우, 먹이를 찾은 경우에는
더이상 이동하지 않고 그 곳에 머무른다고 가정한다.
미로 상자의 테두리는 모두 벽으로 되어 있으며,
개미집은 반드시 (2, 2)에 존재하기 때문에 개미는 (2, 2)에서 출발한다.
P.S. 가독성을 위해 출력 결과에서 입력과 출력 사이에 공백 한 칸을 두었다.
# 미로 상자의 구조 입력
m = [list(map(int, input().split())) for _ in range(10)]
# 개미의 현재 위치
x, y = 1, 1
# 무한히 반복
while True:
m[x][y] = 9 # 개미의 현재 위치를 9로 표시
if m[x][y+1] == 0: # 만약 오른쪽이 갈 수 있는 곳이라면
y += 1 # 개미를 오른쪽으로 이동
elif m[x][y+1] == 2: # 만약 오른쪽에 먹이가 있다면
m[x][y+1] = 9 # 개미의 오른쪽을 9로 표시 후
break # 먹이를 찾은 경우에 해당하여 끝
else: # 만약 오른쪽이 벽이고
if m[x+1][y] == 0: # 개미의 아래쪽이 갈 수 있는 길이라면
x += 1 # 개미를 아래쪽으로 이동
elif m[x+1][y] == 2: # 개미의 아래쪽에 먹이가 있다면
m[x+1][y] = 9 # 개미의 아래쪽을 9로 표시 후
break # 먹이를 찾은 경우에 해당하여 끝
else: # 개미의 오른쪽과 아래쪽이 모두 막혀있다면
break # 더 이상 움직일수 없는 경우에 해당하여 끝
# 출력
for i in range(10):
for j in range(10):
print(m[i][j], end=' ')
print()
1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 2 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 9 9 1 0 0 0 0 0 1 1 0 9 1 1 1 0 0 0 1 1 0 9 9 9 9 9 1 0 1 1 0 0 0 0 0 9 1 0 1 1 0 0 0 0 1 9 1 0 1 1 0 0 0 0 1 9 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1
댓글남기기