반응형

https://www.acmicpc.net/problem/3052

 

3052번: 나머지

각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다.

www.acmicpc.net

문제

두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다.

수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오.

입력

첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다.

출력

첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다.


arr = []

for tc in range(10):
    arr += [int(input())]

arr_2 = []

for i in arr:
    arr_2.append(i%42)

arr_3 = []

for i in arr_2:
    if not i in arr_3:
        arr_3.append(i)

print(len(arr_3))

배열을 3개나 사용했다...ㅎ

마지막 배열을 생각하는데 은근 시간이 걸렸는데

42 나머지 계산이 끝난 arr_2 배열의 값이 arr_3 배열에 없으면 추가 있으면 pass 하고

최종적으로 arr_3의 리스트 길이를 출력했다.

반응형
반응형

https://www.acmicpc.net/problem/2577

 

2577번: 숫자의 개수

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

www.acmicpc.net

문제

세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오.

예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다.

입력

첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다.

출력

첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각 몇 번 쓰였는지 차례로 한 줄에 하나씩 출력한다.


A = int(input())
B = int(input())
C = int(input())

num = A * B * C
num = list(map(int,str(num)))

#카운팅 정렬 이용해보기
arr = [0] * 10

for i in range(len(num)):
    arr[num[i]] += 1
# print(arr) # 각 요소의 자리에 요소의 갯수를 더해준 값을 리스트화

# 한 줄에 하나씩 출력되도록
for i in arr:
    print(i)

카운팅 정렬 과정 중 일부를 이용하면 빠르게 정리할 수 있을 것 같아서 코드를 가져와서 이용했다

for i in range(len(num)):

    arr[num[i]] += 1

부분이 카운팅 정렬을 하기 위해 리스트의 숫자를 인덱스 숫자에 맞춰 요소의 갯수를 더해준 부분

2021.08.23 - [분류 전체보기] - [알고리즘] 카운팅정렬 이해하기

 

하나씩 받아온 숫자를 리스트화 하는 부분도 은근 헷갈렸다. 한번 정리 해봐야겠다.

반응형
반응형

https://www.acmicpc.net/problem/2562

 

2562번: 최댓값

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어

www.acmicpc.net

문제

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.

예를 들어, 서로 다른 9개의 자연수

3, 29, 38, 12, 57, 74, 40, 85, 61

이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.

입력

첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.

출력

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.


arr = []
max_num = 0
idx = 0

for tc in range(9):
    arr += [int(input())]

for i in range(len(arr)):
    if arr[i] > max_num:
        max_num = arr[i]
        idx = i
print(max_num)
print(idx+1)

max_num과 idx를 미리 선언해두고 리스트를 순환하며 앞에 저장된 수보다 크면 값을 바꿔가며

큰 값과 인덱스 값을 찾아주었다.

인덱스는 0부터 시작하기 때문에 +1 하여 출력하였다.

반응형

+ Recent posts