본문 바로가기
코딩 연습/파이썬 기초(예제)

최대값과 최소값 위치, 배수 합계, 소수 구하기 등

by good4me 2022. 5. 11.

goodthings4me.tistory.com

[파이썬기초예제] 네이버 지식인에 올라와 있는 문제(최댓값과 최솟값을 구하고 그 위치까지 찾기, 3의 배수의 합계 구하기, 소수 판별과 주어진 숫자까지의 모든 소수 출력)에 대해 풀이해주고 포스팅함 

 

 

파이썬 기초 예제 풀이

 

Q1. N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하고 그 위치를 찾는 프로그램을 작성하시오.

 

[파이썬 소스 코드]

def max_v(lst):
    temp = lst[0]
    idx = 0  # 최대값 위치 찾기
    for i in range(len(lst)):
        if temp < lst[i]:
            temp = lst[i]
            idx = i
    return temp, idx + 1


def min_v(lst):
    temp = lst[0]
    idx = 0  # 최소값 위치 찾기
    for i in range(len(lst)):
        if temp > lst[i]:
            temp = lst[i]
            idx = i
    return temp, idx + 1


nums = [20, 10, 30, 24, 52]
print(f'최소값은 {min_v(nums)[0]}, 위치는 {min_v(nums)[1]}')
print(f'최대값은 {max_v(nums)[0]}, 위치는 {max_v(nums)[1]}')

numbers = [3, 29, 38, 12, 57, 74, 40, 85, 61]
print(f'최대값은 {max_v(numbers)[0]}, 위치는 {max_v(numbers)[1]}')



[실행 결과]
최소값은 10, 위치는 2
최대값은 52, 위치는 5
최대값은 85, 위치는 8

 

# [다른 방법] 내장함수를 사용하여 최댓값, 최솟값을 구하고 위치도 찾기

nums = [20, 10, 30, 24, 52]
_max = max(nums)
_min = min(nums)
print(_max, nums.index(_max) + 1)
print(_min, nums.index(_min) + 1)

numbers = [3, 29, 38, 12, 57, 74, 40, 85, 61]
print(max(numbers), numbers.index(max(numbers)) + 1)



[실행 결과]
52 5
10 2
85 8

 

 

 

Q2. 3의 배수의 합계를 구하는 함수를 정의하고 반환 값을 활용해 3의 배수의 합을 구하시오.

 

[파이썬 소스 코드]

N = int(input('숫자를 입력하시오 : '))

tot = 0
for i in range(1, N + 1):
    if i % 3 == 0:
        print(i)
        tot += i

print(f'1 ~ {N}까지의 정수 중 3의 배수의 합은 {tot}입니다')



[실행 결과]
숫자를 입력하시오 : 15
3
6
9
12
15
1 ~ 15까지의 정수 중 3의 배수의 합은 45입니다

 

 

 

Q3. 소수를 구하는 함수를 정의하고 숫자를 입력 받아 소수 인지 아 닌지 판별하시오. (1부터 자기 자신까지 나누어 떨어지는 수가 총 2개 일 때 소수)

 

[파이썬 소스 코드]

def prime_num(n):
    if n == 2:
        return '소수'

    for i in range(2, n):
        if n % i == 0:
            return '소수 아님'
    
    return '소수'

result = prime_num(15)
print(result)


[실행 결과]
소수 아님

 

 

 

good4me.co.kr

 

 

Q4. 소수를 구하는 프로그램을 만들고 숫자를 입력하면 그 숫자까지의 소수를 모두 출력하시오.

 

[파이썬 소스 코드]

N = int(input('숫자를 입력하시오 : '))
cnt = 0
for i in range(2, N + 1):
    prime = True
    for j in range(2, i + 1):
        if i == 2:
            break
        if i > j and i % j == 0:
            prime = False
            break
        else:
            continue
    if prime:
        cnt += 1
        print(i)
        
        
        
 [실행 결과]
 숫자를 입력하시오 : 15
2
3
5
7
11
13

 

 

 

 

댓글