프로그래밍/Python

[Codeup 기초100제] 1091 ~ 1099

mhko411 2021. 1. 10. 10:25
728x90

- 1091

시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때, n번째 수를 출력하기

a,m,d,n=input().split()
a=int(a)
m=int(m)
d=int(d)
n=int(n)
cnt=1

while True:
    if cnt==n:
        break
    a*=m
    a+=d
    cnt+=1
print(a)

- 1092

같은 날 동시에 가입한 인원 3명이 규칙적으로 방문하는, 방문 주기가 공백을 두고 입력되었을 때 3명이 다시 모두 함께 방문해 문제를 풀어보는 날(동시 가입/등업 후 며칠 후?)을 출력하기

a,b,c=input().split()
a=int(a)
b=int(b)
c=int(c)

num=1
while True:
    if (num%a==0)and(num%b==0)and(num%c==0):
        break;
    num+=1
print(num)

- 1093

출석 번호를 n번 무작위로 불렀을 때, 각 번호(1 ~ 23)가 불린 횟수를 각각 출력하기

count=int(input())
n=input().split()
number=[0 for _ in range(23)]

for i in range(count):
    number[int(n[i])-1]+=1

for i in range(23):
    print(number[i],end=" ")

=> list=[]는 빈 리스트를 선언한 것이다. 여기서 list=[0 for _ in range(10)]은 리스트에 10개의 0을 추가하게된다. c언어의 경우 전역변수로 int형의 배열을 선언하면 0으로 초기화되지만 파이썬은 용도에 맞게 초기화가 필요하다.


- 1094

출석 번호를 n번 무작위로 불렀을 때, 부른 번호를 거꾸로 출력하기

n=int(input())
call=input().split()
numbers=[]

for i in range(n):
    numbers.append(int(call[i]))

for i in reversed(range(n)):
    print(numbers[i],end=" ")

=> for문에서 reversed를 사용하면 반대 인덱스의 원소부터 출력한다.


- 1095

출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호 출력하기

n=int(input())
call=input().split()
numbers=[]

for i in range(n):
    numbers.append(int(call[i]))

min_num=999
for i in range(n):
    if min_num>numbers[i]:
        min_num=numbers[i]
print(min_num)

- 1096

바둑판(19 * 19)에 n개의 흰 돌을 놓는다고 할 때, n개의 흰 돌이 놓인 위치를 출력하기

map=[[0 for _ in range(20)] for _ in range(20)]

n=int(input())
for i in range(n):
    x,y=input().split()
    x=int(x)-1
    y=int(y)-1
    map[x][y]=1

for i in range(19):
    for j in range(19):
        print(map[i][j],end=" ")
    print()

=> 2차원 리스트를 생성 후 0으로 초기화하는 방법에 대해 알게되었다.


- 1097

바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때, n개의 좌표를 입력받아 십(+)자 뒤집기한 결과 출력하기

a=[[0 for j in range(20)] for i in range(20)]
for k in range(19):
    x=list(map(int,(input().split())))
    for l in range(19):
        a[k+1][l+1]=x[l]

n=int(input())
for _ in range(n):
    y,x=map(int,(input().split()))
    for m in range(1,20):
        if a[y][m]==0:
            a[y][m]=1
        else:
            a[y][m]=0
        if a[m][x]==0:
            a[m][x]=1
        else:
            a[m][x]=0
for y in range(1,20):
    for x in range(1,20):
        print(a[y][x],end=' ')
    print()   

=> 0으로 초기화된 2차원 배열을 선언 후 입력된 값으로 해당 배열을 채울 때 list(map(int, (input().split())))을 사용한다. 뿐만 아니라 처음부터 정수를 입력해야 할 때도 사용할 수 있다.


- 1098

격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l), 막대를 놓는 방향(d:가로는 0, 세로는 1)과
막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때, 격자판을 채운 막대의 모양 출력하기

"""
첫 줄에 격자판의 세로(h), 가로(w) 가 공백을 두고 입력되고,
두 번째 줄에 놓을 수 있는 막대의 개수(n)
세 번째 줄부터 각 막대의 길이(l), 방향(d), 좌표(x, y)가 입력된다.

입력값의 정의역은 다음과 같다.

1 <= w, h <= 100
1 <= n <= 10
d = 0 or 1
1 <= x <= 100-h
1 <= y <= 100-w
"""

w,h=map(int,input().split())
n=int(input())
gameMap=[[0 for _ in range(101)] for _ in range(101)]

for i in range(n):
    l,d,x,y=map(int,input().split())
    if d==0:
        for k in range(y,y+l):
            gameMap[x][k]=1
    else:
        for k in range(x,x+l):
            gameMap[k][y]=1

for i in range(1,w+1):
    for j in range(1,h+1):
        print(gameMap[i][j],end=" ")
    print()

- 1099

개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직임
먹이를 찾았거나 더 이상 움직일 수 없을 때까지 오른쪽 또는 아래쪽으로만 움직임
0: 1: 2: 먹이
개미는 2,2에서 출발
개미가 이동한 경로를 9로 표시하여 출력하기

"""
개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직임

먹이를 찾았거나 더 이상 움직일 수 없을 때까지 오른쪽 또는 아래쪽으로만 움직임

0: 길 1: 벽 2: 먹이

개미는 2,2에서 출발
개미가 이동한 경로를 9로 표시
"""
antMap=[[0 for _ in range(10)] for _ in range(10)]

for i in range(10):
    antMap[i]=list(map(int,input().split()))
y=1
x=1
while True:
   if antMap[y][x]==2:
       antMap[y][x]=9
       break
   elif antMap[y+1][x]==1 and antMap[y][x+1]==1:
       antMap[y][x]=9
       break
   antMap[y][x]=9
   if antMap[y][x+1]==1:
       y+=1
   elif antMap[y+1][x]==1:
       x+=1
   else:
       x+=1



for i in range(10):
    for j in range(10):
        print(antMap[i][j],end=" ")
    print()