CodeUp 기초 100제_Python(6046 ~ 6098)

Rocki_log·2022년 4월 12일
0

Algorithm

목록 보기
1/3

6046 비트단위시프트연산자

정수 1개를 입력받아 2배 곱해 출력해보자. (단, 비트단위시프트연산자를 이용한다.) ```py print(int(input())<<1) ``` ### 비트단위시프트연산자 ``` 형태 변수<>n 이면 변수 나누기 2의 n승 ``` 정수를 2의 n승으로 곱하거나 나누어 계산해주는 <<, >>를 이용할 수 있다. 컴퓨터 내부에는 2진수 형태로 값들이 저장되기 때문이다.

예시
n = 125
print(n<<1) #125를 2배 한 값인 200 이 출력된다.
print(n>>1) #125를 2로 나눈 값에서 int로 감싼 62가 출력된다.
print(n/2) #125를 2로 나누면 62.5의 float값이 출력된다.
print(n<<2) #125를 4 곱한 값인 500이 출력된다.(int)
print(n>>2) #125를 4로 나눈 값에서 int로 감싼 31이 출력된다.
print(n/4) #125를 4로 나누면 31.25의 float값이 출력된다.

정수 10의 2진수 표현은 1010 이다.
10 << 1 을 계산하면 10100 이 된다 이 값은 10진수로 20이다.
10 >> 1 을 계산하면 101 이 된다. 이 값은 10진수로 5이다.

n = 0o10
print(n)     #8
print(n<<1)  #16
print(n/2)   #4.0

n = 0o10 으로 작성해 넣으면 8진수(octal) 10으로 인식되어 10진수 8값이 저장되고
n = 0xf 나 n = 0XF 으로 작성해 넣으면 16진수(hexadecimal) F로 인식되어 10진수 15값으로 저장된다.

  • 단, python에서 실수 값에 대한 비트시프트 연산은 허용되지 않고 오류가 발생한다.
    (실수 값도 컴퓨터 내부적으로는 2진수 형태로 저장되고 비트시프트 처리가 될 수 있지만, python 에서는 허용하지 않는다.)

6047

정수 2개(a, b)를 입력받아 a를 2b배 곱한 값으로 출력해보자.

a, b = input().split()
print(int(a)<<int(b))

6048 비교연산

두 정수(a, b)를 입력받아
a가 b보다 작으면 True 를, a가 b보다 크거나 같으면 False 를 출력하는 프로그램을 작성해보자.

#내 풀이
a, b = input().split()
a = int(a)
b = int(b)
if a < b:
    print(True)
elif a >= b:
    print(False)
#정리된 풀이
a, b = input().split()
a = int(a)
b = int(b)
print(int(a)<int(b)) #if가 굳이 필요없는데... 썼다

6049

두 정수(a, b)를 입력받아
a와 b의 값이 같으면 True 를, 같지 않으면 False 를 출력하는 프로그램을 작성해보자.

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

6050

두 정수(a, b)를 입력받아
b의 값이 a의 값 보다 크거나 같으면 True 를, 같지 않으면 False 를 출력하는 프로그램을 작성해보자.

a, b = input().split()
print(int(a)<=int(b))

6051

두 정수(a, b)를 입력받아
a의 값이 b의 값과 서로 다르면 True 를, 같으면 False 를 출력하는 프로그램을 작성해보자.

a, b = input().split()
print(int(a)!=int(b))

6052 논리연산

정수가 입력되었을 때, True/False 로 평가해주는 프로그램을 작성해보자.

print(bool(int(input())))

6053

정수값이 입력될 때,
그 불 값을 반대로 출력하는 프로그램을 작성해보자.

print(not bool(int(input())))

6054

2개의 정수값이 입력될 때,
그 불 값이 모두 True 일 때에만 True 를 출력하는 프로그램을 작성해보자.

a, b = input().split()
print(bool(int(a) and int(b)))
  • 6048번과 비교해보자

6055

2개의 정수값이 입력될 때,
그 불 값이 하나라도 True 일 때에만 True 를 출력하는 프로그램을 작성해보자.

a, b = input().split()
print(bool(int(a) or int(b)))

6056

2개의 정수값이 입력될 때,
그 불 값(True/False) 이 서로 다를 때에만 True 를 출력하는 프로그램을 작성해보자.

#내 풀이_if문을 사용했다.
a, b = input().split()
if int(a) != int(b):
    print(True)
else:
    print(False)
#if문 없이_1

6057

2개의 정수값이 입력될 때,
그 불 값(True/False) 이 서로 같을 때에만 True 를 출력하는 프로그램을 작성해보자.

#내 풀이_if사용
a, b = input().split()
if int(a) == int(b):
    print(True)
else:
    print(False)
#if문 없이_1
a, b = input().split()
a = bool(int(a))
b = bool(int(b))
print(a==b)
#if문 없이_1
a, b = input().split()
a = bool(int(a))
b = bool(int(b))
print((a and b) or (not a and not b))

6058

2개의 정수값이 입력될 때,
그 불 값(True/False) 이 모두 False 일 때에만 True 를 출력하는 프로그램을 작성해보자.

a, b = input().split()
print(not bool(int(a)) and not bool(int(b)))

6059 비트단위논리연산

입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자.
비트단위(bitwise)연산자 ~ 를 붙이면 된다.(~ : tilde, 틸드라고 읽는다.)

a = 1
print(~a) #-2가 출력된다.
간단히 표현하면, 정수 n이라고 할 때,
~n = -n - 1
-n = ~n + 1 과 같은 관계로 표현할 수 있다.
print(~int(input())) #만약 2를 넣으면 -3이 나온다.

1)비트단위 연산자 종류

  • ~ (bitwise not)
  • & (bitwise and)
  • | (bitwise or)
  • ^ (bitwise xor)
  • << (bitwise left shift)
  • >> (bitwise right shift)

6060 & (bitwise and)

입력된 정수 두 개를 비트단위로 and 연산한 후 그 결과를 정수로 출력해보자.

a, b= input().split()
print(int(a)&int(b))

1) 과정
예를 들어 3과 5가 입력되었을 때를 살펴보면 아래와 같이 된다.
3 : 00000000 00000000 00000000 00000011
5 : 00000000 00000000 00000000 00000101
3 & 5 : 00000000 00000000 00000000 00000001
비트단위 and 연산은 두 비트열이 주어졌을 때,
둘 다 1인 부분의 자리만 1로 만들어주는 것과 같다.

2) 활용
A. 데이터를 주고 받기 위해 같은 네트워크인지 판단

  • 어떤 비트열의 특정 부분만 모두 0으로도 만들 수 있다.
    • 192.168.0.31 : 11000000.10101000.00000000.00011111
    • 255.255.255.0 : 11111111.11111111.11111111.00000000
      두 개의 ip 주소를 & 연산하면
    • 192.168.0.0 : 110000000.10101000.0000000.00000000 을 계산할 수 있다.

B. 그래픽 처리에서 마스크연산(특정 부분을 가리고 출력한다.)

6061 | (bitwise or)

입력된 정수 두 개를 비트단위로 or 연산한 후 그 결과를 정수로 출력해보자.

a, b= input().split()
print(int(a)|int(b))

1) 과정
| 은 파이프(pipe)연산자라고도 불린다.
예를 들어 3과 5가 입력되었을 때를 살펴보면
3 : 00000000 00000000 00000000 00000011
5 : 00000000 00000000 00000000 00000101
3 | 5 : 00000000 00000000 00000000 00000111

6062 ^ (bitwise xor)

입력된 정수 두 개를 비트단위로 xor 연산한 후 그 결과를 정수로 출력해보자.

a, b= input().split()
print(int(a)^int(b))

3       : 00000000 00000000 00000000 00000011
5       : 00000000 00000000 00000000 00000101
3 ^ 5 : 00000000 00000000 00000000 00000110
쉽게 설명하자면, 두 장의 이미지가 겹쳐졌을 때 색이 서로 다른 부분만 처리할 수 있다.

주의! ^은 수학식에서 거듭제곱(power)을 의미하지만, C언어에서는 전혀 다른 배타적 논리합(xor, 서로 다를 때 1)의 의미를 가진다.

6063 3항연산

입력된 두 정수(a, b) 중 큰 값을 출력하는 프로그램을 작성해보자.
단, 3항 연산을 사용한다.

a, b= input().split()
a = int(a)
b = int(b)
c = a if a>=b else b
print(c)

※ 3항 연산
3개의 요소로 이루어진 연산이다.
1) 형태 (x if C else y)

  • C : True 또는 False 를 평가할 조건식(conditional expression) 또는 값
  • x : C의 평가 결과가 True 일 때 사용할 값
  • y : C의 평가 결과가 True 가 아닐 때 사용할 값
#3항연산
x if C else y
#조건문
if C:
    x 
else:
    y

6064

입력된 세 정수 a, b, c 중 가장 작은 값을 출력하는 프로그램을 작성해보자.
단, 3항 연산을 사용한다.

a, b, c = input().split()
a = int(a)
b = int(b)
c = int(c)
d = a if a<b else b
e = d if d<c else c
print(e)

#3항연산 안 쓰고 리스트활용 풀이
a, b, c= input().split()
d = [int(a), int(b), int(c)]
print(min(d))

6065 조건/선택실행구조

3개의 정수(a, b, c)가 입력되었을 때, 짝수만 출력해보자.

a, b, c= input().split()
d = [a, b, c]
for i in d:
    i = int(i)
    if i % 2 == 0:
        print(i)

6066

3개의 정수(a, b, c)가 입력되었을 때, 짝수면 even을, 홀수면 odd를 출력해보자.

a, b, c= input().split()
d = [a, b, c]
for i in d:
    i = int(i)
    if i % 2 == 0:
        print("even")
    else:
        print("odd")

6067

0이 아닌 정수 1개가 입력되었을 때, 음(-)/양(+)과 짝(even)/홀(odd)을 구분해 분류해보자.

a = int(input())
if a < 0:
    if a % 2 == 0:
        print("A")
    else:
        print("B")
else:
    if a % 2 == 0:
        print("C")
    else:
        print("D")

6068

점수(정수, 0 ~ 100)를 입력받아 평가를 출력해보자.

a = int(input())
if 90 <= a:
    print("A")
elif 70 <= a:
    print("B")
elif 40 <= a:
    print("C")
else:
    print("D")

6069

평가를 문자(A, B, C, D, ...)로 입력받아 내용을 다르게 출력해보자.

a = input()
if a == "A":
    print("best!!!")
elif a == "B":
    print("good!!")
elif a == "C":
    print("run!")
elif a == "D":
    print("slowly~")
else:
    print("what?")

6070

월이 입력될 때 계절 이름이 출력되도록 해보자.

a = int(input())
if a == 12 or 0 < a < 3:
    print("winter")
elif a < 6:
    print("spring")
elif a < 9:
    print("summer")
elif a < 12:
    print("fall")

입력 예시: 출력예시
12, 1, 2 : winter
3, 4, 5 : spring
6, 7, 8 : summer
9, 10, 11 : fall

6071 반복실행구조

0이 아니면 입력된 정수를 출력하고, 0이 입력되면 출력을 중단해보자.

while True:
    a = int(input())
    if a == 0:
        break
    else:
        print(a)
#이거와 무슨 차이지?
a = 1
while a != 0:
    a = int(input())
    print(a)

6072

정수(1 ~ 100) 1개가 입력되었을 때 1까지 카운트다운을 출력해보자.

a = int(input())
while a != 0:
    print(a)
    a -= 1

6073 6072와 비교

정수(1 ~ 100) 1개가 입력되었을 때 1까지 카운트다운을 출력해보자.
(단, 입력숫자 미포함)

a = int(input())
while a != 0:
    a -= 1   #요 생각을 못했네
    print(a)

6074

영문 소문자(a ~ z) 1개가 입력되었을 때,
a부터 그 문자까지의 알파벳을 순서대로 출력해보자.

입력 예시: f
출력 예시: a b c d e f

a = ord(input()) 
b = ord("a")
while b <= a:
    print(chr(b), end=' ')
    b += 1

6075

정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자.

a = int(input()) 
b = 0
while b <= a:
    print(b)
    b += 1

6076

정수(0 ~ 100) 1개를 입력받아 0부터 그 수까지 순서대로 출력해보자.
단, for문과 range를 활용해라.

#내 풀이
a = int(input()) 
for i in range(101):
    if i > a:
        break
    else:
        print(i)
# 정리된 풀이
a = int(input()) 
for i in range(a+1):
    print(i)

6077

정수(1 ~ 100) 1개를 입력받아 1부터 그 수까지 짝수의 합을 구해보자.

a = int(input())
b = 0
for i in range(2, a+1, 2):
    b += i
print(b)

6078

영문 소문자 'q'가 입력될 때까지
입력한 문자를 계속 출력하는 프로그램을 작성해보자.

a = 0
while a != "q":
    a = input()
    print(a)

6079

1, 2, 3 ... 을 계속 더해 나갈 때,
그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지만
계속 더하는 프로그램을 작성해보자.
순서대로 계속 더해 합을 만들어가다가, 입력된 정수와 같거나 커졌을 때, 마지막에 더한 정수를 출력한다.

# for 풀이
a = int(input())
sum = 0
for i in range(1000):
    sum += i
    if sum >= a:
        break
print(i)

# while 풀이
n = int(input())
s = 0
t = 0
while s<n :
  t += 1
  s += t
print(t)

6080 주사위 경우의 수

1부터 n까지, 1부터 m까지 숫자가 적힌 서로 다른 주사위 2개를 던졌을 때,
나올 수 있는 모든 경우를 출력해보자.

a, b = input().split()
a= int(a)
b = int(b)
for i in range(1, a+1):
    for j in range(1, b+1):
        print(i, j) 

6081

16진수(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F)를 배운
영일이는 16진수끼리 곱하는 16진수 구구단?에 대해서 궁금해졌다.
A, B, C, D, E, F 중 하나가 입력될 때,
1부터 F까지 곱한 16진수 구구단의 내용을 출력해보자.
(단, A ~ F 까지만 입력된다.)

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

n = int(input(), 16)
for i in range(1, 16):
    print('%X'%n, '*%X'%i, '=%X'%(n*i), sep='')

10진수에서 16진수로 표현

print('%X'%n) #n에 10진수 숫자 입력
print('%X'%15) #F
print('%x'%15) #f   x가 소문자면 출력도 소문자로

16진수에서 10진수로 표현

print(int("16진수", 16))
print(int("F", 16)) # 15

6082

3 6 9 게임은?
여러 사람이 순서를 정한 후, 순서대로 수를 부르는 게임이다.
만약 3, 6, 9 가 들어간 수를 자신이 불러야 하는 상황이라면, 수를 부르는 대신 박수를 쳐야 한다.
33과 같이 3,6,9가 두 번 들어간 수 일때, "짝짝"과 같이 박수를 두 번 치는 형태도 있다.
입력 받은 숫자까지 마지막 숫자가 3, 6, 9인 숫자는 'X'로 표현되게 한다.

num1 = int(input())
for i in range(1, num1+1):
    if i%10==3 or i%10==6 or i%10==9 :      
        i = "X"
    print(i, end="  ")

※ 마지막 숫자가 3, 6, 9인 계산 표현 방법

6083

빨강(red), 초록(green), 파랑(blue) 빛을 섞어 여러 가지 다른 색 빛을 만들어 내려고 한다. 빨강(r), 초록(g), 파랑(b) 각 빛의 가짓수가 주어질 때, 주어진 rgb 빛들을 섞어 만들 수 있는 모든 경우의 조합(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

#풀이1
r, g, b = input().split()
r = int(r)
g = int(g)
b = int(b)
a = 0
for i in range(r):
    for j in range(g):
        for k in range(b):
            print(i,j,k)
            a += 1
print(a) # 혹은 a를 사용하지않고 print(r*g*b)으로도 가능하다.
#풀이2 (메모리초과)
r, g, b = input().split()
r = int(r)
g = int(g)
b = int(b)
list1 = []
for i in range(r):
    for j in range(g):
        for k in range(b):
            list1.append([i,j,k])
            print(i,j,k)
print(len(list1))

6084 소리 파일 저장용량 계산하기

소리가 컴퓨터에 저장될 때에는 디지털 데이터화 되어 저장된다.

마이크를 통해 1초에 적게는 수십 번, 많게는 수만 번 소리의 강약을 체크하고,
한 번씩 체크할 때 마다 그 값을 정수값으로 바꾸어 저장하는 방식으로 소리를 파일로 저장할 수 있다.

값을 저장할 때에는 비트를 사용하는 정도에 따라 세세한 녹음 정도를 결정할 수 있고,
좌우(스테레오) 채널로 저장하면 2배… 5.1채널이면 6배의 저장공간이 필요하고,
녹음 시간이 길면 그 만큼 더 많은 저장공간이 필요하다.
1초 동안 마이크로 소리강약을 체크하는 횟수를 h
(헤르츠, Hz 는 1초에 몇 번? 체크하는가를 의미한다.)
한 번 체크한 값을 저장할 때 사용하는 비트수를 b
(2비트를 사용하면 0 또는 1 두 가지, 16비트를 사용하면 65536가지..)
좌우 등 소리를 저장할 트랙 개수인 채널 개수를 c
(모노는 1개, 스테레오는 2개의 트랙으로 저장함을 의미한다.)
녹음할 시간(초) s가 주어질 때,
필요한 저장 용량을 계산하는 프로그램을 작성해보자.

a, b, c, d=map(int, input().split())
e = a*b*c*d/8
print(round((e/1024)/1024, 1), "MB")

※ map 함수 이용

1) list와 활용

a = list(map(str, range(6)))  #map(적용할 함수, 적용범위)
print(type(a[1]))  # <class 'str'> 리스트 내에 일일히 함수를 적용한다.

2)input한 여러 변수들 한번에 int로 타입변환

#활용 
a, b, c, d=map(int, input().split())
#a, b, c, d를 일일히 int 선언한 것과 같다

6085 그림 파일 저장용량 계산하기 (*24)

이미지가 컴퓨터에 저장될 때에도 디지털 데이터화 되어 저장된다.

가장 기본적인 방법으로는 그림을 구성하는 한 점(pixel, 픽셀)의 색상을
빨강(r), 초록(g), 파랑(b)의 3가지의 빛의 세기 값으로 따로 변환하여 저장하는 것인데,

예를 들어 r, g, b 각 색에 대해서 8비트(0~255, 256가지 가능)씩을 사용한다고 하면,

한 점의 색상은 3가지 r, g, b의 8비트+8비트+8비트로 총 24비트로 표현해서
총 2^24 가지의 서로 다른 빛의 색깔을 사용할 수 있는 것이다.

그렇게 저장하는 점을 모아 하나의 큰 이미지를 저장할 수 있게 되는데,
1024 * 768 사이즈에 각 점에 대해 24비트로 저장하면 그 이미지를 저장하기 위한
저장 용량을 계산할 수 있다.

이렇게 이미지의 원래(raw) 데이터를 압축하지 않고 그대로 저장하는 대표적인 이미지 파일이 *.bmp 파일이며, 비트로 그림을 구성한다고 하여 비트맵 방식 또는 래스터 방식이라고 한다.

이미지의 가로 해상도 w, 세로 해상도 h, 한 픽셀을 저장하기 위한 비트 b 가 주어질 때,
압축하지 않고 저장하기 위해 필요한 저장 용량을 계산하는 프로그램을 작성해 보자.

예를 들어
일반적인 1024 768 사이즈(해상도)의 각점에 대해
24비트(rgb 각각 8비트씩 3개)로 저장하려면
1024
768 * 24 bit의 저장공간이 필요한데,
1024*768*24/8/1024/1024 로 계산하면 약 2.25 MB 정도가 필요하다.

실제 그런지 확인하고 싶다면, 간단한 그림 편집/수정 프로그램을 통해 확인할 수 있다.

입력예시
w, h, b 가 공백을 두고 입력된다.
단, w, h는 모두 정수이고 1~1024 이다. b는 40이하의 4의 배수이다.
필요한 저장 공간을 MB 단위로 바꾸어 출력한다. 단, 소수점 셋째 자리에서 반올림하여 둘째 자리까지 출력한다.
a, b, c=map(int, input().split())
e = a*b*c/8
print("%.2f MB"%round((e/1024)/1024, 2))

6086

1, 2, 3 ... 을 순서대로 계속 더해 합을 만드는데,
그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.

즉, 1부터 n까지 정수를 하나씩 더해 합을 만드는데,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.

하지만, 이번에는 그 때까지의 합을 출력해야 한다.

예를 들어, 57을 입력하면
1+2+3+...+8+9+10=55에서 그 다음 수인 11을 더해 66이 될 때,
그 값 66이 출력되어야 한다.

#풀이1_for문
a = int(input())
sum = 0
for i in range(1, a+1):
    sum += i
    if sum >= a:
        break
print(sum)

#풀이2_while문
a=int(input())
s=0
c=0
while True:
    s=s+c
    c=c+1
    if s>=a:
        break
print(s)

6087 3의 배수 외 수 출력

1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되,
3의 배수인 경우는 출력하지 않도록 만들어보자.

입력 예시: 10
출력예시: 1 2 4 5 7 8 10
a=int(input())
for i in range(1, a+1):
    if i%3 != 0:
        print(i, end=" ")

6088 등차수열

시작 값(a), 등차의 값(d), 몇 번째 수 인지를 의미하는 정수(n)가
공백을 두고 입력된다.(모두 0 ~ 100) 즉, a d n을 입력하면 n번째 수를 출력해보자.

a, d, n= map(int , input().split())
for i in range(1, n): #왜 n+1이 아닌지 생각해보자.
    a += d
print(a)

6089 등비수열

시작 값(a), 등비의 값(r), 몇 번째 인지를 나타내는 정수(n)가
공백을 두고 입력된다.(모두 0 ~ 10) 즉, a r n을 입력하면 n번째 수를 출력해보자.

a, d, n= map(int , input().split())
for i in range(1, n):
    a *= d
print(a)

6090 혼합수열

시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째 인지를 나타내는 정수(n)가
공백을 두고 입력된다.(a, m, d는 -50 ~ +50, n은 10이하의 자연수) 즉, a m d n을 입력하면 n번째 수를 출력해보자.

a, m, d, n= map(int , input().split())
for i in range(1, n):
    a = a*m+d
print(a)

6091

함께 문제 푸는 날(설명)
같은 날 동시에 가입한 인원 3명이 규칙적으로 방문하는,
방문 주기가 공백을 두고 입력된다. (단, 입력값은 100이하의 자연수이다.) 3명이 다시 모두 함께 방문해 문제를 풀어보는 날(동시 가입/등업 후 며칠 후?)을 출력한다.

#풀이1(for문)
a, b, c = map(int, input().split())
for i in range(1, (a*b*c)+1):
    if i%a == 0 and i%b == 0 and i%c == 0:
        print(i)
        break
        
#풀이2(while문)
a, b, c = map(int, input().split())
d = 1
while d%a!=0 or d%b!=0 or d%c!=0 :
  d += 1
print(d)

6092 이상한 출석 번호 부르기1(설명)

1 ~ 23번 학생의 출석을 부르는데 순서대로 부르는 게 아닌 선생님이 무작의로 n번 부른다. 중복되게 부를 수도 있다. 그럴 때 중복되게 불린 번호의 개수를 일일이 출력해보자.

첫 번째 줄에 출석 번호를 부른 횟수인 정수 n이 입력된다. (1 ~ 10000) # 예시 10
두 번째 줄에는 무작위로 부른 n개의 번호(1 ~ 23)가 공백을 두고 순서대로 입력된다. # 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
n = int(input())      #개수를 입력받아 n에 정수로 저장
a = list(map(int, input().split()))  #공백을 기준으로 잘라 a에 순서대로 저장

# d를 0값이 24개인 리스트로 만든다.
d = []                 
for i in range(24) :  
  d.append(0)       
#입력한 숫자를 매칭하여 개수를 센다.
for i in range(n) :    #번호를 부를 때마다, 그 번호에 대한 카운트 1씩 증가
  d[a[i]] += 1
print(*d[1:])

6093 이상한 출석 번호 부르기 2(거꾸로)

출석 번호를 n번 무작위로 부르는데 부른 번호들을 거꾸로 출력해보자.
번호를 부른 횟수(n, 1 ~ 10000)가 첫 줄에 입력된다. #입력예시 10
n개의 랜덤 번호(k, 1 ~ 23)가 두 번째 줄에 공백을 사이에 두고 순서대로 입력된다. #입력예시 10 4 2 3 6 6 7 9 8 5

출력예시
5 8 9 7 6 6 3 2 4 10
n = int(input())      #개수를 입력받아 n에 정수로 저장
a = list(map(int, input().split()))  #공백을 기준으로 잘라 a에 순서대로 저장
print(*a[::-1])

map함수를 이용하면 굳이 n 값을 따로 넣을 필요 없다.

6094 이상한 출석 번호 부르기 3(가장 작은 출석 번호)

출석번호를 n번 부르는데 부른 출석번호 중 가장 작은 번호를 출력해보자. 입력예시는 6093과 별반 다르지 않다.

n = int(input())      #개수를 입력받아 n에 정수로 저장
a = list(map(int, input().split()))  #공백을 기준으로 잘라 a에 순서대로 저장
print(min(a))

6095 바둑판에 흰 돌 놓기(설명)

바둑판(19 * 19) 바둑판을 만들고 n개의 흰 돌을 놓는다. n개의 흰 돌이 놓인 위치를 구별하여 바둑판을 출력해보자. 바둑판에 놓을 흰돌의 개수를 첫 번째 줄에 입력한다. 두 번째 줄부터 n+1줄까지 흰돌을 놓을 위치를 x y 띄어쓰기 없이 입력한다.

출력예시
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
#먼저 2차원리스트로 바둑판을 만든다.
z = []
for i in range(19): #19개 돌을 놓는다. 20이 아닌 이유를 생각해보자.
    z.append([])
    for j in range(19):
        z[i].append(0)
#입력받을 값과 그 값에 따라 흰돌을 놓는다.
n = int(input())
for i in range(n) :
    a,b = map(int, input().split())
    z[a-1][b-1] = 1
#바둑판을 언패킹해서 출력한다.
for j in z:
    print(*j)

6096

z = []
d = 30
for i in range(19):
    c = list(map(int, input().split()))
    z.append(c)

n = int(input())
for i in range(n):
    a,b = map(int, input().split())
    a -= 1
    b -= 1
    for j in range(19):
        if d != j:
            if a != j:
                if z[a][j] == 1:
                    z[a][j] = 0

                    
            if b != j:
                if z[j][b] == 1:
                    z[j][b] = 0
                    if z[j][b] == z[b][b]:
                        break

for j in z:
    print(*j)

6097

6098

profile
Learning&Running

0개의 댓글