21 분 소요

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 

댓글남기기