백준 파이썬 Today I Learn 2023.05.13
5/ 13 파이썬 공부
1. 백준 2720 세탁소 사장 동혁
미국으로 유학간 동혁이는 세탁소를 운영하고 있다. 동혁이는 최근에 아르바이트로 고등학생 리암을 채용했다.
동혁이는 리암에게 실망했다.
리암은 거스름돈을 주는 것을 자꾸 실수한다.
심지어 $0.5달러를 줘야하는 경우에 거스름돈으로 $5달러를 주는것이다!
어쩔수 없이 뛰어난 코딩 실력을 발휘해 리암을 도와주는 프로그램을 작성하려고 하지만,
디아블로를 하느라 코딩할 시간이 없어서 이 문제를 읽고 있는 여러분이 대신 해주어야 한다.
거스름돈의 액수가 주어지면 리암이 줘야할 쿼터(Quarter, $0.25)의 개수, 다임(Dime, $0.10)의 개수, 니켈(Nickel, $0.05)의 개수, 페니(Penny, $0.01)의 개수를 구하는 프로그램을 작성하시오. 거스름돈은 항상 $5.00 이하이고, 손님이 받는 동전의 개수를 최소로 하려고 한다. 예를 들어, $1.24를 거슬러 주어야 한다면, 손님은 4쿼터, 2다임, 0니켈, 4페니를 받게 된다.
첫째 줄에 테스트 케이스의 개수 T가 주어진다.
각 테스트 케이스는 거스름돈 C를 나타내는 정수 하나로 이루어져 있다.
C의 단위는 센트이다. (1달러 = 100센트) (1<=C<=500)
각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다.
>>>코드
T = int(input())
for i in range(T):
n = int(input())
print('%d %d %d %d' %(n//25, n%25//10, n%25%10//5, n%25%10%5))
그냥 나누고 몫과 나머지 처리하면 된다
2. 백준 2875 대회 or 인턴
백준대학교에서는 대회에 나갈 때 2명의 여학생과 1명의 남학생이 팀을 결성해서 나가는 것이 원칙이다.
(왜인지는 총장님께 여쭈어보는 것이 좋겠다.)
백준대학교는 뛰어난 인재들이 많아 올해에도 N명의 여학생과 M명의 남학생이 팀원을 찾고 있다.
대회에 참여하려는 학생들 중 K명은 반드시 인턴쉽 프로그램에 참여해야 한다.
인턴쉽에 참여하는 학생은 대회에 참여하지 못한다.
백준대학교에서는 뛰어난 인재들이 많기 때문에, 많은 팀을 만드는 것이 최선이다.
여러분은 여학생의 수 N, 남학생의 수 M, 인턴쉽에 참여해야하는 인원 K가 주어질 때 만들 수 있는 최대의 팀 수를 구하면 된다.
첫째 줄에 N, M, K가 순서대로 주어진다. (0 ≤ M ≤ 100, 0 ≤ N ≤ 100, 0 ≤ K ≤ M+N)
만들 수 있는 팀의 최대 개수을 출력하면 된다.
>>>코드
N, M, K = map(int, input().split())
r = []
for i in range(K+1):
if (N-i)//2>M-K+i:
r.append(M-K+i)
else:
r.append((N-i)//2)
r.sort(reverse = True)
print(r[0])
인턴을 뺀 수에서 최대의 팀수를 계산에서 리스트에 저장
내림차순으로 변형 후 첫번째 인덱스 출력
3.백준 1284 집주소
재석이는 대문에 붙이는 (주소를 나타내는) 호수판 제작업체의 직원이다.
고객에게 전달할 호수판은 숫자와 숫자 사이 그리고 왼쪽 오른쪽으로 적당히 여백이 들어가 줘야하고 숫자마다 차지하는 간격이 조금씩 상이하다. 다행이도 규칙은 매우 간단하다.
각 숫자 사이에는 1cm의 여백이 들어가야한다.
1은 2cm의 너비를 차지해야한다. 0은 4cm의 너비를 차지해야한다. 나머지 숫자는 모두 3cm의 너비를 차지한다.
호수판의 경계와 숫자 사이에는 1cm의 여백이 들어가야한다.
예를 들어 위의 120 같은 경우, 각 숫자 사이에 여백이 1cm 씩 2개 들어간다.
1은 2cm, 2는 3cm, 0은 4cm를 차지한다. 오른쪽, 왼쪽 경계에서 각각 여백이 1cm씩 차지한다.
따라서 총 2 + 2 + 3 + 4 + 1 + 1 = 13(cm) 가 된다.
재석이는 고객에게 전달해야할 호수판의 너비가 얼마나 되는지 궁금해졌다. 재석이를 도와주자!
호수판에 들어갈 숫자 N의 범위는 1 ≤ N ≤ 9999 이다.
입력은 마지막에 0이 들어오기 전까지 계속해서 줄 단위로 주어진다.
또한, 마지막의 0은 처리하지 않는다.
각 입력마다 얼마만큼 너비를 차지하는지 정수로 출력하면 된다.
각 출력은 줄바꿈으로 구분되어야한다.
>>>코드
while True:
n = input()
r = 1
if n == '0':
break
for i in range(len(n)):
if n[i] == '1':
r += 3
elif n[i] == '0':
r += 5
else:
r += 4
print(r)
0 나오면 반복문 종료되는 코드 + 1, 0, 나머지일때 다르게 더해지는 계산 조건문 + 출력문
4. 백준 2455 지능형 기차
최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다.
이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다.
이 장치를 이용하여 출발역에서 종착역까지 가는 도중 기차 안에 사람이 가장 많을 때의 사람 수를 계산하려고 한다.
단, 이 기차를 이용하는 사람들은 질서 의식이 투철하여, 역에서 기차에 탈 때, 내릴 사람이 모두 내린 후에 기차에 탄다고 가정한다.
내린 사람 수 탄 사람 수
1번역(출발역) 0 32
2번역 3 13
3번역 28 25
4번역(종착역) 39 0
예를 들어, 위와 같은 경우를 살펴보자. 이 경우, 기차 안에 사람이 가장 많은 때는 2번역에서 3명의 사람이 기차에서 내리고, 13명의 사람이 기차에 탔을 때로, 총 42명의 사람이 기차 안에 있다.
기차는 다음 조건을 만족하면서 운행된다고 가정한다.
(1) 기차는 역 번호 순서대로 운행한다.
(2) 출발역에서 내린 사람 수와 종착역에서 탄 사람 수는 0이다.
(3) 각 역에서 현재 기차에 있는 사람보다 더 많은 사람이 내리는 경우는 없다.
(4) 기차의 정원은 최대 10,000명이고, 정원을 초과하여 타는 경우는 없다.
4개의 역에 대해 기차에서 내린 사람 수와 탄 사람 수가 주어졌을 때,
기차에 사람이 가장 많을 때의 사람 수를 계산하는 프로그램을 작성하시오.
각 역에서 내린 사람 수와 탄 사람 수가 빈칸을 사이에 두고 첫째 줄부터 넷째 줄까지 역 순서대로 한 줄에 하나씩 주어진다. 첫째 줄에 최대 사람 수를 출력한다.
>>>코드
r = []
n = 0
for i in range(4):
d, a = map(int, input().split())
n = n-d+a
r.append(n)
print(max(r))
각 역에서의 최종 인원을 리스트에 저장 후 최대값 출력
5. 백준 2460 지능형 기차2
최근에 개발된 지능형 기차가 1번역(출발역)부터 10번역(종착역)까지 10개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. 이 장치를 이용하여 출발역에서 종착역까지 가는 도중 기차 안에 사람이 가장 많을 때의 사람 수를 계산하려고 한다. 단, 이 기차를 이용하는 사람들은 질서 의식이 투철하여, 역에서 기차에 탈 때, 내릴 사람이 모두 내린 후에 기차에 탄다고 가정한다.
내린 사람 수 탄 사람 수
1번역(출발역) 0 32
2번역 3 13
3번역 28 25
4번역 17 5
5번역 21 20
6번역 11 0
7번역 12 12
8번역 4 2
9번역 0 8
10번역(종착역) 21 0
예를 들어, 위와 같은 경우를 살펴보자. 이 경우, 기차 안에 사람이 가장 많은 때는 2번역에서 3명의 사람이 기차에서 내리고, 13명의 사람이 기차에 탔을 때로, 총 42명의 사람이 기차 안에 있다.
이 기차는 다음 조건을 만족하면서 운행된다고 가정한다.
(1) 기차는 역 번호 순서대로 운행한다.
(2) 출발역에서 내린 사람 수와 종착역에서 탄 사람 수는 0이다.
(3) 각 역에서 현재 기차에 있는 사람보다 더 많은 사람이 내리는 경우는 없다.
(4) 기차의 정원은 최대 10,000명이고, 정원을 초과하여 타는 경우는 없다.
10개의 역에 대해 기차에서 내린 사람 수와 탄 사람 수가 주어졌을 때, 기차에 사람이 가장 많을 때의 사람 수를 계산하는 프로그램을 작성하시오.
각 역에서 내린 사람 수와 탄 사람 수가 빈칸을 사이에 두고 첫째 줄부터 열 번째 줄까지 역 순서대로 한 줄에 하나씩 주어진다. 첫째 줄에 최대 사람 수를 출력한다.
>>>코드
r = []
n = 0
for i in range(10):
d, a = map(int, input().split())
n = n-d+a
r.append(n)
print(max(r))
어라라? 지능형 기차 범위가 10으로 는 것밖에 없다.
6. 백준 2721 삼각수의 합
n번째 삼각수, T(n)은 1부터 n까지의 합이다.
T(n) = 1 + ... + n. 이것은 삼각형 모양으로 표현할 수 있다. 아래 그림은 T(4)를 나타낸 것이다.
다음과 같은 식을 통해 가중치를 부여한 삼각수의 합을 구할 수 있다.
W(n) = Sum[k=1..n; k*T(k+1)]
n이 주어졌을 때, W(n)을 구하는 프로그램을 작성하시오.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 정수 n 하나로 이루어져 있다. (1<=n<=300)
각 테스트 케이스에 대해 W(n)을 한 줄에 하나씩 출력한다.
>>>코드
test = int(input())
for i in range(test):
n = int(input())
r, p = 0, 1
for k in range(n):
p += k+2
r += (k+1)*p
print(r)
테스트 케이스 수 만큼 반복
나머지는 계산식에 맞는 코드 생성
7. 백준 2506 점수계산
OX 문제는 맞거나 틀린 두 경우의 답을 가지는 문제를 말한다.
여러 개의 OX 문제로 만들어진 시험에서 연속적으로 답을 맞히는 경우에는 가산점을 주기 위해서 다음과 같이 점수 계산을 하기로 하였다. 1번 문제가 맞는 경우에는 1점으로 계산한다. 앞의 문제에 대해서는 답을 틀리다가 답이 맞는 처음 문제는 1점으로 계산한다. 또한, 연속으로 문제의 답이 맞는 경우에서 두 번째 문제는 2점, 세 번째 문제는 3점, ..., K번째 문제는 K점으로 계산한다. 틀린 문제는 0점으로 계산한다.
예를 들어, 아래와 같이 10 개의 OX 문제에서 답이 맞은 문제의 경우에는 1로 표시하고, 틀린 경우에는 0으로 표시하였을 때, 점수 계산은 아래 표와 같이 계산되어, 총 점수는 1+1+2+3+1+2=10 점이다.
채점 1 0 1 1 1 0 0 1 1 0
점수 1 0 1 2 3 0 0 1 2 0
시험문제의 채점 결과가 주어졌을 때, 총 점수를 계산하는 프로그램을 작성하시오.
첫째 줄에 문제의 개수 N (1 ≤ N ≤ 100)이 주어진다.
둘째 줄에는 N개 문제의 채점 결과를 나타내는 0 혹은 1이 빈 칸을 사이에 두고 주어진다.
0은 문제의 답이 틀린 경우이고, 1은 문제의 답이 맞는 경우이다.
첫째 줄에 입력에서 주어진 채점 결과에 대하여 가산점을 고려한 총 점수를 출력한다.
>>>코드
N = int(input())
score = list(map(int, input().split()))
r, a = sum(score), 0
for i in range(N-1):
if score[i] == 0:
a = 0
if score[i] == 1 and score[i] == score[i+1]:
a += 1
r += a
print(r)
추가점수를 측정하는 코드가 관건이었음
1이 연속되면 추가점수가 1점씩 늘어가며 더해지다가 0이 나오면 다시 추가점수가 0으로 초기화 되도록 만들었다.
그리고 나머지 기본 점수는 sum()함수로 계산
8. 백준 2959 거북이
거북이는 이제 어떤 것에도 흥미를 느끼지 않는다.
그 이유는 거북이가 300년동안 살았고, 그 동안 모든 것들을 다 해보았기 때문이다.
거북이는 시간을 떼우는 무엇인가를 하려고 한다.
이번 주말에 거북이는 거북이 세계에서 매우 유명한 게임인 "가장 큰 직사각형 만들기"를 해보려고 한다.
이 게임을 시작하기 전에 거북이는 양의 정수 네 개를 머릿 속에 생각해야 한다.
한 방향으로 움직이기 시작하고 90도 회전한 뒤에 새로운 방향으로 움직인다.
이런 식으로 세 번 90도 회전을 하고, 네 번 앞으로 움직여서 선분 네 개를 만들어야 한다.
거북이가 선분을 그릴 때 움직여야 하는 걸음의 수는 생각해 놓은 네 정수중 하나이다.
이때, 한 정수를 각각 한 번씩 사용해야 한다.
거북이가 정수를 사용하는 순서에 따라서 다양한 모양이 만들어진다. 어떤 모양은 직사각형을 만들 수 없기도 한다.
거북이가 만들 수 있는 가장 큰 직사각형을 계산하는 프로그램을 작성하시오.
첫째 줄에 거북이가 생각한 네 양의 정수 A, B, C, D가 주어진다. (0 < A, B, C, D < 100)
첫째 줄에 거북이가 만들 수 있는 가장 큰 직사각형의 면적을 출력한다.
>>>코드
edge = list(map(int, input().split()))
edge.sort()
print(edge[0]*edge[2])
음. 규칙은 일단 정사각형이 성립하려면 가장 짧은 면은 무조건 한 면을 차지해야하며, 가장 긴면은 마지막에 마무리 해주는 용도로 쓰이기에 가장 크려면 두번째로 긴면과 가장 짧은 면으로 이루어진 직사각형을 만들어야한다.
9. 백준 3034 앵그리 창영
창영이는 화가나서 성냥을 바닥에 던졌다.
상근이는 바닥이 더러워진 것을 보고 창영이를 매우 혼냈다.
강산이는 근처에서 박스를 발견했다.
상덕이는 강산이가 발견한 박스를 상근이에게 주었다.
상근이는 박스에 던진 성냥을 모두 담아오라고 시켰다.
하지만, 박스에 들어가지 않는 성냥도 있다.
이런 성냥은 박스에 담지 않고 희원이에게 줄 것이다.
성냥이 박스에 들어가려면, 박스의 밑면에 성냥이 모두 닿아야 한다.
박스의 크기와 성냥의 길이가 주어졌을 때,
성냥이 박스에 들어갈 수 있는지 없는지를 구하는 프로그램을 작성하시오. 창영이는 성냥을 하나씩 검사한다.
첫째 줄에 던진 성냥의 개수 N과 박스의 가로 크기 W와 세로 크기 H가 주어진다. (1 ≤ N ≤ 50, 1 ≤ W, H ≤ 100)
다음 N개 줄에는 성냥의 길이가 주어진다. 길이는 1보다 크거나 같고 1000보다 작거나 같은 자연수이다.
입력으로 주어지는 각각의 성냥에 대해서, 박스안에 들어갈 수 있으면 "DA" 없으면 "NE"를 출력한다.
>>>코드
N ,W, H = map(int, input().split())
for i in range(N):
size = int(input())
if size <= (W**2 + H**2)**0.5:
print('DA')
else:
print('NE')
피타고라스 법칙을 이용하여 대각선 길이보다 작거나 같으면 'DA' 아니면 'NE'를 출력하면 된다
10. 백준 5565 영수증
새 학기를 맞아 상근이는 책을 10권 구입했다.
상근이는 의욕이 너무 앞서서 가격을 조사하지 않고 책을 구입했다.
이제 각 책의 가격을 알아보려고 한다.
하지만, 영수증에는 얼룩이 묻어있었고, 상근이는 책 10권 중 9권의 가격만 읽을 수 있었다.
책 10권의 총 가격과 가격을 읽을 수 있는 9권 가격이 주어졌을 때,
가격을 읽을 수 없는 책의 가격을 구하는 프로그램을 작성하시오.
첫째 줄에 10권의 총 가격이 주어진다. 둘째 줄부터 9개 줄에는 가격을 읽을 수 있는 책 9권의 가격이 주어진다.
책의 가격은 10,000이하인 양의 정수이다.
첫째 줄에 가격을 읽을 수 없는 책의 가격을 출력한다.
>>>코드
total_price = int(input())
price = list(int(input()) for i in range(9))
print(total_price - sum(price))
간단한 계산문제
11. 백준 2921 도미노
도미노는 여러 종류의 타일 게임에서 사용하는 조각이다. 도미노 조각은 두 칸으로 이루어져 있다. 각 칸에는 점이 찍혀있는데, 점이 안 찍혀져 있을 수도 있다. 점의 개수는 세트의 크기에 의해서 결정된다. 세트의 크기가 N인 도미노 세트에서 점의 개수는 0보다 크거나 같고, N보다 작거나 같다. 두 도미노에 찍혀잇는 점의 개수가 같다면, 두 도미노는 동일한 것이다. 예를 들어, 점이 2개와 8개 찍혀있는 도미노는 8개와 2개 찍혀있는 도미노와 같은 도미노이다.
크기가 N인 도미노 세트는 N 또는 그보다 작거나 같은 점을 포함하는 가능한 도미노를 모두 포함하고 있고, 각 도미노는 중복되지 않는다. 다음은 크기가 2인 도미노 세트이다.
N을 입력받은 뒤, 크기가 N인 도미노 세트에는 점이 몇 개 찍혀 있는지 구하는 프로그램을 작성하시오.
첫째 줄에 도미노 세트의 크기 N (1 ≤ N ≤ 1000)이 주어진다.
크기가 N인 도미노 세트에 찍혀 있는 점의 개수를 출력한다.
>>>코드
N = int(input())
r = 0
for i in range(N+1):
r += (i*(N+2))
print(r)
와씨 점점 어려워 지는데 규칙을 잘 찾아보자
각 경우는 N이 하나 늘어갈 수록 1, 2, ... ,N까지의 수가 한번씩 더 들어갈 경우가 만들어진다.
예시로 1의 개수를 생각해 보자 (0,1), (1,1), (1,2), (1,3) ..... 만약 N이 입력 되었다면 1의 개수는 N+2가 될 것이다. 결국 1이 들어갈 도미노의 나머지 칸은 N일 것이기 떄문에
12. 백준 2914 저작권
창영이는 노래 여러 개를 이어서 부르는 가수이다.
유명한 노래의 비슷한 멜로디를 이어서 부르면서 언제 곡이 넘어갔는지 모르게 만드는 것이 창영이 노래의 특징이다. 이런 노래로 상업적으로 엄청난 성공을 거둔 창영이에게 큰 시련이 찾아왔다. 그것은 바로 저작권이었다.
창영이의 노래에 포함되어 있는 멜로디는 모두 저작권이 다른 사람에게 있는 노래이다.
따라서, 이 음악으로 상업적인 활동을 했기 때문에, 저작권 협회에 저작권료를 내야한다.
창영이는 자신의 앨범에 포함되어있는 저작권이 있는 멜로디의 평균값을 구해보기로 했다.
이 값은 아래와 같이 구할 수 있다.
(창영이 앨범에 수록된 곡에 포함되어 있는 저작권이 있는 멜로디의 개수) / (앨범에 수록된 곡의 개수)
이때, 평균값은 항상 올림을 해서 정수로 만들어야 한다. 예를 들어, 창영이의 1집 앨범 "영창에서 영원히 영창피아노를 친다"에 총 38개 곡이 수록되어 있고, 이 앨범에 저작권이 있는 멜로디가 894개가 있다면, 평균값은 23.53이 되고 올림해서 24가 된다.
매니저 강산이는 얼마나 많은 사람에게 저작권료를 주어야 하는지 궁금해졌다.
강산이가 알고 있는 정보는 앨범에 수록되어 있는 곡의 개수와 위에서 구한 평균값이다.
이때, 적어도 몇 곡이 저작권이 있는 멜로디인지 구하는 프로그램을 작성하시오.
첫째 줄에 앨범에 수록된 곡의 개수 A와 평균값 I가 주어진다. (1 ≤ A, I ≤ 100)
첫째 줄에 적어도 몇 곡이 저작권이 있는 멜로디인지 출력한다.
>>>코드
A, I = map(int, input().split())
print(A*(I-1)+1)
내용의 핵심을 아는 것이 중요하다.
일단 평균값을 '올림'한다고 말했다.
그렇다면 정해진 수보다 1 작은 수에서 0.000001만이라도 많다면 올림이 된다는 의미이다.
그렇다면 평균값을 애초에 1작은 수로 가정하여 곡의 개수를 계산한 후 1만 더해주면 무조건 평균값은 올림이 된다.
13. 백준 1598 꼬리를 무는 숫자 나열
동물원에서 막 탈출한 원숭이 한 마리가 세상구경을 하고 있다. 그 녀석은 원주 부근을 돌아다니다가 코레스코 콘도에서 아주 재밌는 놀이를 발견했다. 그 놀이의 이름은 바로 “꼬리를 무는 숫자 나열”. 이제부터 원숭이가 그토록 좋아하던 그 놀이를 파헤쳐보자.
놀이의 방법은 간단하다. 일단 4줄짜리 표에 왼쪽부터 수를 아래로 1부터 순서대로 적어나간다.
다음에 그 예가 잘 나타나있다.
하지만 원숭이는 지금 혼란스럽다. 동물원에서 탈출한지 얼마 되지 않아서 계산을 할 수 없는 경지에 이르렀다.
여러분이 불쌍한 원숭이를 좀 도와줘야겠다.
원숭이가 생각한 두 자연수 사이의 직각거리를 구하는 프로그램을 작성하시오.
첫째 줄에 원숭이가 생각한 두 개의 자연수가 주어진다. 각 수는 10,000,000 이하이다.
첫째 줄에 원숭이가 생각한 두 개의 자연수 사이의 직각거리를 출력한다.
>>>코드
N, M = map(int, input().split())
x1 = (N-1)//4 +1
x2 = (M-1)//4 +1
y1 = (N-1)%4 +1
y2 = (M-1)%4 +1
print(abs(x1-x2)+abs(y1-y2))
좀 어려웠는데, 각 부분을 x,y좌표계로 나타낸다고 생각하자
N의 위치는 위에서 (N-1)%4 +1, 왼쪽에서 (N-1)//4 +1의 좌표에 있다.
그냥 나누면은 마지막줄의 나머지와 몫이 0이 나와버리기 때문에 1을 빼준 후에 나누고 나중에 1더해주어야한다.
14. 백준 25915 연세여 사랑한다
고려대학교 학생 훈규는 2022 정기 연고전에서 열심히 응원을 하다가 정신을 잃고 깨어나 보니 연세대학교의 감옥에 갇혀 있었다. 훈규가 감옥을 탈출하기 위해서는 바닥에 깔린 비밀번호 석판을 이용해서 비밀번호 "ILOVEYONSEI"를 입력해야 한다.
비밀번호 석판은 총 26가지의 석판이 일렬로 나열되어 있고, 각각 알파벳 대문자가 왼쪽부터 알파벳 순서대로 적혀 있다. 즉, i번째 석판에는 i번째 알파벳 대문자가 적혀 있다. 인접한 석판의 거리는 1이다.
따라서 A가 적힌 석판에서 출발해Z가 적힌 석판에 도착하기 위해서는 25의 거리를 이동해야 한다.
원하는 알파벳을 입력하려면 해당 알파벳이 적혀 있는 석판 위에 올라가 점프해야 한다.
점프는 0의 거리를 이동한다.
훈규가 현재 위치한 석판의 알파벳이 주어진다. 훈규는 최소로 이동해 비밀번호를 모두 입력하고자 한다.
입력은 아래와 같이 주어진다. '알파벳 대문자'
훈규가 비밀번호를 모두 입력하기 위한 이동 거리의 최솟값을 출력한다.
>>>코드
N = input()
print(abs(ord(N)-73)+84)
사실 I로 간 이후에는 동일한 이동거리가 소요된다. 3+3+7+17+20+10+1+5+14+4 = 84
'ILOVEYONSEI' 아스키 코드표
I: 73
L: 76
O: 79
V: 86
E: 69
Y: 89
O: 79
N: 78
S: 83
E: 69
I: 73
15. 백준 23808 골뱅이 찍기-ㅂ
서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다.
상자 안에는 ㅂ자 모양의 골뱅이가 들어있다. ㅂ자 모양은 가로 및 세로로 각각 5개의 셀로 구성되어 있다.
상자에는 정사각형 모양의 셀의 크기를 나타내는 숫자 하나가 적혀있다.
셀의 크기 N이 주어지면 예제 출력과 같은 방식으로 골뱅이 모양을 출력하시오.
첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다.
셀의 크기가 N인 골뱅이를 출력한다.
>>>코드
N = int(input())
for i in range(2*N):
print('@'*N + ' '*N + '@'*N)
for i in range(N):
print('@@@@@'*N)
for i in range(N):
print('@'*N + ' '*N + '@'*N)
for i in range(N):
print('@@@@@'*N)
순서대로 구현하면 된다
16. 백준 23794 골뱅이 찍기-정사각형
첫째 줄과 N+2번째 줄에는 골뱅이 N+2개를 출력한다.
둘째 줄부터 N+1번째 줄까지는 예제 출력과 같은 방식으로 골뱅이 2개와 공백 N개를 출력한다.
첫째 줄에 정수 N(1 <= N <= 100)이 주어진다.
첫째 줄부터 N+2번째 줄까지 차례대로 골뱅이를 출력한다.
>>>코드
N = int(input())
print('@@' + '@'*N)
for i in range(N):
print('@' + ' '*N + '@')
print('@@' + '@'*N)
순서대로 구현하기 22
이것도 시리즈 인가보다
17. 백준 23802 골뱅이 찍기-뒤집힌 ㄱ
서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다.
상자 안에는 뒤집힌 ㄱ자 모양의 골뱅이가 들어있다.
뒤집힌 ㄱ자 모양은 가로 및 세로로 각각 5개의 셀로 구성되어 있다.
상자에는 정사각형 모양의 셀의 크기를 나타내는 숫자 하나가 적혀있다.
셀의 크기 N이 주어지면 예제 출력과 같은 방식으로 골뱅이 모양을 출력하시오.
첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다.
셀의 크기가 N인 골뱅이를 출력한다.
>>>코드
N = int(input())
for i in range(N):
print('@@@@@'*N)
for i in range(4*N):
print('@'*N)
순서대로 구현하기 333
18. 백준 23803 골뱅이 찍기-ㄴ
서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다.
상자 안에는 ㄴ자 모양의 골뱅이가 들어있다.
ㄴ자 모양은 가로 및 세로로 각각 5개의 셀로 구성되어 있다.
상자에는 정사각형 모양의 셀의 크기를 나타내는 숫자 하나가 적혀있다.
셀의 크기 N이 주어지면 예제 출력과 같은 방식으로 골뱅이 모양을 출력하시오.
첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다.
셀의 크기가 N인 골뱅이를 출력한다.
>>>코드
N = int(input())
for i in range(4*N):
print('@'*N)
for i in range(N):
print('@@@@@'*N)
윗문제의 카피문제라고 봐도 무방하다
순서대로 구현하기 4444
19. 백준 23804 골뱅이 찍기-ㄷ
서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다.
상자 안에는 ㄷ자 모양의 골뱅이가 들어있다.
ㄷ자 모양은 가로 및 세로로 각각 5개의 셀로 구성되어 있다.
상자에는 정사각형 모양의 셀의 크기를 나타내는 숫자 하나가 적혀있다.
셀의 크기 N이 주어지면 예제 출력과 같은 방식으로 골뱅이 모양을 출력하시오.
첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다.
셀의 크기가 N인 골뱅이를 출력한다.
>>>코드
N = int(input())
for i in range(N):
print('@@@@@'*N)
for i in range(3*N):
print('@'*N)
for i in range(N):
print('@@@@@'*N)
살짝 변형됨 그러나 동일
순서대로 구현하기 55555
20. 백준 23805 골뱅이 찍기-돌아간 ㄹ
서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다.
상자 안에는 반시계방향으로 90도 돌아간 ㄹ자 모양의 골뱅이가 들어있다.
돌아간 ㄹ자 모양은 가로 및 세로로 각각 5개의 셀로 구성되어 있다.
상자에는 정사각형 모양의 셀의 크기를 나타내는 숫자 하나가 적혀있다.
셀의 크기 N이 주어지면 예제 출력과 같은 방식으로 골뱅이 모양을 출력하시오.
첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다.
셀의 크기가 N인 골뱅이를 출력한다.
>>>코드
N = int(input())
for i in range(N):
print('@@@'*N + ' '*N + '@'*N)
for i in range(3*N):
print('@'*N + ' '*N + '@'*N + ' '*N + '@'*N)
for i in range(N):
print('@'*N + ' '*N + '@@@'*N)
순서대로 구현하기 666666
21. 백준 23806 골뱅이 찍기-ㅁ
서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다.
상자 안에는 ㅁ자 모양의 골뱅이가 들어있다.
ㅁ자 모양은 가로 및 세로로 각각 5개의 셀로 구성되어 있다.
상자에는 정사각형 모양의 셀의 크기를 나타내는 숫자 하나가 적혀있다.
셀의 크기 N이 주어지면 예제 출력과 같은 방식으로 골뱅이 모양을 출력하시오.
첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다.
셀의 크기가 N인 골뱅이를 출력한다.
>>>코드
N = int(input())
for i in range(N):
print('@@@@@'*N)
for i in range(3*N):
print('@'*N + ' '*N + '@'*N)
for i in range(N):
print('@@@@@'*N)
순서대로 구현하기 7777777
22. 백준 23809 골뱅이 찍기-돌아간 ㅈ
서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다.
상자 안에는 반시계 방향으로 90도 돌아간 ㅈ자 모양의 골뱅이가 들어있다.
돌아간 ㅈ자 모양은 가로 및 세로로 각각 5개의 셀로 구성되어 있다.
상자에는 정사각형 모양의 셀의 크기를 나타내는 숫자 하나가 적혀있다.
셀의 크기 N이 주어지면 예제 출력과 같은 방식으로 골뱅이 모양을 출력하시오.
첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다.
셀의 크기가 N인 골뱅이를 출력한다.
>>>코드
N = int(input())
for i in range(N):
print('@'*N + ' '*N + '@'*N)
for i in range(N):
print('@'*N + ' '*N + '@'*N)
for i in range(N):
print('@@@'*N)
for i in range(N):
print('@'*N + ' '*N + '@'*N)
for i in range(N):
print('@'*N + ' '*N + '@'*N)
순서대로 구현하기 88888888
23. 백준 23810 골뱅이 찍기-뒤집힌 ㅋ
서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다.
상자 안에는 뒤집힌 ㅋ자 모양의 골뱅이가 들어있다.
뒤집힌 ㅋ자 모양은 가로 및 세로로 각각 5개의 셀로 구성되어 있다.
상자에는 정사각형 모양의 셀의 크기를 나타내는 숫자 하나가 적혀있다.
셀의 크기 N이 주어지면 예제 출력과 같은 방식으로 골뱅이 모양을 출력하시오.
첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다.
셀의 크기가 N인 골뱅이를 출력한다.
>>>코드
N = int(input())
for i in range(N):
print('@@@@@'*N)
for i in range(N):
print('@'*N)
for i in range(N):
print('@@@@@'*N)
for i in range(2*N):
print('@'*N)
순서대로 구현하기 999999999
24. 백준 23811 골뱅이 찍기-ㅌ
서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다.
상자 안에는 ㅌ자 모양의 골뱅이가 들어있다.
ㅌ자 모양은 가로 및 세로로 각각 5개의 셀로 구성되어 있다.
상자에는 정사각형 모양의 셀의 크기를 나타내는 숫자 하나가 적혀있다.
셀의 크기 N이 주어지면 예제 출력과 같은 방식으로 골뱅이 모양을 출력하시오.
첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다.
셀의 크기가 N인 골뱅이를 출력한다.
>>>코드
N = int(input())
for i in range(N):
print('@@@@@'*N)
for i in range(N):
print('@'*N)
for i in range(N):
print('@@@@@'*N)
for i in range(N):
print('@'*N)
for i in range(N):
print('@@@@@'*N)
순서대로 구현하기 10
25. 백준 23812 골뱅이 찍기-돌아간 ㅍ
서준이는 아빠로부터 골뱅이가 들어 있는 상자를 생일 선물로 받았다.
상자 안에는 반시계 방향으로 90도 돌아간 ㅍ자 모양의 골뱅이가 들어있다.
돌아간 ㅍ자 모양은 가로 및 세로로 각각 5개의 셀로 구성되어 있다.
상자에는 정사각형 모양의 셀의 크기를 나타내는 숫자 하나가 적혀있다.
셀의 크기 N이 주어지면 예제 출력과 같은 방식으로 골뱅이 모양을 출력하시오.
첫째 줄에 정수 N(1 ≤ N ≤ 100)이 주어진다.
셀의 크기가 N인 골뱅이를 출력한다.
>>>코드
N = int(input())
for i in range(N):
print('@'*N + ' '*N + '@'*N)
for i in range(N):
print('@@@@@'*N)
for i in range(N):
print('@'*N + ' '*N + '@'*N)
for i in range(N):
print('@@@@@'*N)
for i in range(N):
print('@'*N + ' '*N + '@'*N)
마지막 순서대로 구현하기
마지막 골뱅이