백준 알고리즘 2884번 + 반복문 10950번 8393번 25314번

2024. 11. 27. 16:19카테고리 없음

문제

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다.

상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다.

이런 상근이를 불쌍하게 보던 창영이는 자신이 사용하는 방법을 추천해 주었다.

바로 "45분 일찍 알람 설정하기"이다.

이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다.

현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로 고쳐야 하는지 구하는 프로그램을 작성하시오.

입력

첫째 줄에 두 정수 H와 M이 주어진다. (0 ≤ H ≤ 23, 0 ≤ M ≤ 59) 그리고 이것은 현재 상근이가 설정한 알람 시간 H시 M분을 의미한다.

입력 시간은 24시간 표현을 사용한다. 24시간 표현에서 하루의 시작은 0:0(자정)이고, 끝은 23:59(다음날 자정 1분 전)이다. 시간을 나타낼 때, 불필요한 0은 사용하지 않는다.

출력

첫째 줄에 상근이가 창영이의 방법을 사용할 때, 설정해야 하는 알람 시간을 출력한다. (입력과 같은 형태로 출력하면 된다.)

 

H, M = map(int, input().split())

if M < 45 :	# 분단위가 45분보다 작을 때 
    if H == 0 :	# 0 시이면
        H = 23
        M += 60
    else :	# 0시가 아니면 (0시보다 크면)
        H -= 1	
        M += 60
        
print(H, M-45)

 

1. 분단위가 45분보다 작냐 크냐 에 따라서 H 가 바뀌기 때문에 첫번째 조건식을 M으로 설정해주어야 함 

 

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

각 테스트 케이스마다 A+B를 출력한다.

예제 입력 1 복사

5
1 1
2 3
3 4
9 8
5 2

예제 출력 1 복사

2
5
7
17
7

 

T = int(input())
A, B = map(int, input().split())
for i in T:
    print(A+B)

처음 작성 코드

error : typeError

수정 코드

T = int(input())
for _ in range(T):
    A, B = map(int, input().split())
    print(A+B)

A+B를 반복해서 새로 받아와야 하니 for 안에 들어가야 함 

 

8393번

처음 쓴 코드

n = int(input())
for i in range(n):
    print(..)

 

수정 코드

n = int(input())
ans = 0
for i in range(1, n+1):
    ans += i
print(ans)

1.  input n 을 받고, 정수 3까지 도달하는 정수를 다 더해줄 변수 ans를 초기화해놓기

2. for문을 이용해서 입력받은 n+1 즉 4까지 i에 1,2,3을 돌리는 반복문 사용 

i 1일 때, ans = 0+ 1

i 2일 때 ans = 1+2

i 3일 때 ans = 3 + 3

 

놓친것 : 더해줄 변수 저장하기 

 

 

25304번

문제

준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것이 맞는지 확인해보려 한다.

영수증에 적힌,

  • 구매한 각 물건의 가격과 개수
  • 구매한 물건들의 총 금액

을 보고, 구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하는지 검사해보자.

입력

첫째 줄에는 영수증에 적힌 총 금액 X가 주어진다.

둘째 줄에는 영수증에 적힌 구매한 물건의 종류의 수 N이 주어진다.

이후 N개의 줄에는 각 물건의 가격 a와 개수 b가 공백을 사이에 두고 주어진다.

출력

구매한 물건의 가격과 개수로 계산한 총 금액이 영수증에 적힌 총 금액과 일치하면 Yes를 출력한다. 일치하지 않는다면 No를 출력한다.

제한

  •  1≤X≤1000000000
  •  1≤N≤100
  •  1≤a≤1000000
  •  1≤b≤10

예제 입력 1 복사

260000
4
20000 5
30000 2
10000 6
5000 8

예제 출력 1 복사

Yes

영수증에 적힌 구매할 물건들의 목록으로 계산한 총 금액은 20000 × 5 + 30000 × 2 + 10000 × 6 + 5000 × 8 = 260000원이다. 이는 영수증에 적힌 총 금액인 260000원과 일치한다. 

예제 입력 2 복사

250000
4
20000 5
30000 2
10000 6
5000 8

예제 출력 2 복사

No

초기 코드 

x = int(input())
n = int(input())
for i in range(n):
    A, B = map(int, input().split())
    i = A*B
    ans += i
    if ans == x : 
        print("Yes")
    elif :
        print("No")

 

정답

x = int(input())  # Total amount
n = int(input())  # Number of items
ans = 0
for i in range(n):
    A, B = map(int, input().split())  # Cost per item and quantity
    ans += A * B  # Add to the total sum

if ans == x:
    print("Yes")
else:
    print("No")

 

 

25314번

오늘은 혜아의 면접 날이다. 면접 준비를 열심히 해서 앞선 질문들을 잘 대답한 혜아는 이제 마지막으로 칠판에 직접 코딩하는 문제를 받았다. 혜아가 받은 문제는 두 수를 더하는 문제였다. C++ 책을 열심히 읽었던 혜아는 간단히 두 수를 더하는 코드를 칠판에 적었다. 코드를 본 면접관은 다음 질문을 했다. “만약, 입출력이 N바이트 크기의 정수라면 프로그램을 어떻게 구현해야 할까요?”

혜아는 책에 있는 정수 자료형과 관련된 내용을 기억해 냈다. 책에는 long int 4바이트 정수까지 저장할 수 있는 정수 자료형이고 long long int 8바이트 정수까지 저장할 수 있는 정수 자료형이라고 적혀 있었다. 혜아는 이런 생각이 들었다. “int 앞에 long을 하나씩 더 붙일 때마다 4바이트씩 저장할 수 있는 공간이 늘어나는 걸까? 분명 long long long int 12바이트, long long long long int 16바이트까지 저장할 수 있는 정수 자료형일 거야!” 그렇게 혜아는 당황하는 면접관의 얼굴을 뒤로한 채 칠판에 정수 자료형을 써 내려가기 시작했다.

혜아가 N바이트 정수까지 저장할 수 있다고 생각해서 칠판에 쓴 정수 자료형의 이름은 무엇일까?

입력

첫 번째 줄에는 문제의 정수 N이 주어진다. (4≤N≤1000; N 4의 배수)

출력

혜아가 N바이트 정수까지 저장할 수 있다고 생각하는 정수 자료형의 이름을 출력하여라.

예제 입력 1 복사

4

예제 출력 1 복사

long int

예제 입력 2 복사

20

예제 출력 2 복사

long long long long long int

노트

출력에서 long long, long int 사이에는 공백이 하나씩 들어간다.

실제로 C++에서 각 정수 자료형이 저장할 수 있는 수의 크기는 환경에 따라 달라질 수 있다. 덧붙여, 실제로 문제 내용과 같이 long long long int와 같은 자료형을 사용한 코드를 GCC의 C++ 컴파일러를 사용해 컴파일하려고 할 경우 'long long long' is too long for GCC라는 에러 메시지와 함께 컴파일되지 않는다.

 

 

초기 나의 답안

n = int(input())
ans = "long"
for i in rang(n):
    print(ans*i, " int")

 

정답

n = int(input())  # 정수 n 입력
ans = "long "  # "long " 문자열 정의
for i in range(1, n + 1):  # 1부터 n까지 반복
    print(ans * i + "int")

그런데 출력오류가 계속 난다. 

 

왤까...  컴퓨터는거짓말을 하지 않는데...