본문 바로가기
알고리즘/CodeUp PS

[CodeUp][Python] 1281번 : 홀수는 더하고 짝수는 빼고 3

by 빛밤하늘 2021. 9. 15.
반응형

밑의 링크는 CodeUp에서의 문제 링크입니다.

문제는 링크를 통해서 직접 봐주시길 바랍니다.

 

홀수는 더하고 짝수는 빼고 3

자연수 a, b 사이의 구간에 대해서 홀수는 더하고 짝수는 빼는 식을 보여준 후 결과를 출력하시오. 예) a=5, b=10 인 경우, 5-6+7-8+9-10=-3 a=6, b=9 인 경우, -6+7-8+9=2

codeup.kr

 

 

 

주의해야 할 점

1. map, split를 사용하는 입력 방식

실수나 정수인 여러 값들이 입력값일 때,

split 메서드를 사용해 공백이나 어떤 문자를 기준으로 입력값을 여러 값들로 분리하고,

map 내장 함수로 각각의 값들을 int형이나 float형으로 정수, 실수 자료형으로

변환하는 기법은 매우 많이 쓰입니다.

코드 이해부터 하고 나면 다른 문제에서도 외운 듯이 사용해봅시다.

nums = map(int, sys.stdin.readline().split())

 

2. 홀수, 짝수를 판별하는 방법

이 문제에서처럼 어떤 수가 또 홀수인지 짝수인지를 판별할 때는

나머지를 반환하는 연산자 '%'를 사용합니다.

숫자를 2로 나누었을 때 나머지가 1이라면 홀수, 나머지가 0이라면 짝수인 성질을 이용하는 것입니다.

나머지 연산자는 이 기법뿐만 아니라 정말 많이 쓰이니 꼭 기억합시다.

 

3. 출력 형식에 맞게 출력하기

print 내장 함수를 사용하여 출력할 때, 이번 문제처럼 특별한 출력 형식이 주어진다면

+를 사용해서 출력 형식에 맞게 출력해도 되지만,

더 편한 방법인 f-string을 사용해서 편하게 출력해봅시다.

 

4. a, b 사이의 구간에서 첫 번째 숫자 a가 홀수인 경우

출력할 식을 표현할 때 첫 번째 숫자 a가 홀수라서 더해줄 경우,

맨 앞에 불필요한 '+'는 붙이지 않아야 합니다.

 

 

예제 설명

1. 첫 번째 예제

- 입력

5 7

 

- 출력

5-6+7=6

 

- 설명

입력한 두 자연수 a, b는 각각 5, 7입니다.

5부터 7 사이의 수에서 홀수는 5, 7, 짝수는 6이므로

홀수는 더하고 짝수는 뺀 식은 5-6+7이고, 값은 5 - 6 + 7 = 6입니다.

따라서 문자열 5-6+7=6을 출력합니다.

 

 

생각한 풀이 과정

두 자연수 a, b를 공백으로 구분해 입력합니다.

홀수는 더하고 짝수는 뺀 값을 저장할 변수 sum_result를 선언하고, 0으로 초기화합니다.

a부터 b값까지 반복하면서 더하고 빼는 식을 저장할 변수 expression을 선언하고, 빈 문자열로 초기화합니다.

 

입력한 a부터 b값까지 반복해봅니다.

현재 숫자가 홀수라면, 즉 현재 숫자를 2로 나누었을 때 나머지가 1이라면

sum_result에 현재 숫자를 더해줍니다.

expression에 '+(현재 숫자)' 문자열을 넣어줍니다.

현재 숫자가 짝수라면, 즉 현재 숫자를 2로 나누었을 때 나머지가 0이라면

sum_result에 현재 숫자를 빼줍니다.

expression에 '-(현재 숫자)' 문자열을 넣어줍니다.

 

맨 처음 연산하는 숫자인 a의 값이 홀수라면, 즉 a의 값을 2로 나누었을 때 나머지가 1이라면

식을 저장하고 있는 expression 변수에는 맨 앞에 불필요한 '+'가 저장되어 있으므로,

문자열 슬라이싱을 통해 맨 앞의 '+'는 없애줍니다.

 

출력 형식에 맞게 a부터 b값까지 홀수는 더하고 짝수는 빼는 식 문자열이 담긴 expression의 값,

뒤에 '=' 문자를 붙이고, 이어서 a부터 b값까지 홀수는 더하고 짝수는 뺀 결과 값인

sum_result의 값을 붙여서 출력합니다.

 

 

제출한 파이썬 코드

# readline을 사용하기 위해 import합니다.
from sys import stdin


# 두 자연수 a, b를 공백으로 구분해 입력합니다.
# 각각 int형으로 변환합니다.
a, b = map(int, stdin.readline().split())
# 홀수는 더하고 짝수는 뺀 값을 저장할 변수를 선언합니다.
# 0으로 초기화합니다.
sum_result = 0
# 홀수는 더하고 짝수는 뺀 식을 저장할 변수를 선언합니다.
# 빈 문자열로 초기화합니다.
expression = ''

# a부터 b까지 반복해봅니다.
for num in range(a, b + 1):
    # 현재 숫자가 홀수라면 즉, 현재 숫자를 2로 나누었을 때 나머지가 1이라면
    if num % 2 == 1:
        # sum_result에 현재 숫자를 더해줍니다.
        sum_result += num
        # expression에 '+(현재 숫자)' 문자열을 넣어줍니다.
        expression += f'+{num}'
    # 그 외의 경우인 현재 숫자가 짝수라면 즉, 현재 숫자를 2로 나누었을 때 나머지가 0이라면
    else:
        # sum_result에 현재 숫자를 빼줍니다.
        sum_result -= num
        # expression에 '-(현재 숫자)' 문자열을 넣어줍니다.
        expression += f'-{num}'

# 맨 처음 연산하는 숫자인 a의 값이 홀수라면 즉, a의 값을 2로 나누었을 때 나머지가 1이라면
if a % 2 == 1:
    # 현재 expression 변수에 저장되어 있는 문자열 맨 앞에는 '+' 기호가 있습니다.
    # expression 맨 앞에 있는 '+'는 없애줍니다.
    expression = expression[1:]

# a부터 b값까지 홀수는 더하고 짝수는 뺀 식과 결과를 출력 형식에 맞게 출력합니다.
print(f'{expression}={sum_result}')

 

 

제출 결과

CodeUp 1281번 : 홀수는 더하고 짝수는 빼고 3에서 코드 제출 결과
CodeUp 1281번 : 홀수는 더하고 짝수는 빼고 3에서 코드 제출 결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

※ 공감 버튼과 구독 버튼도 잊지 말고 꾹 눌러주시면 감사하겠습니다~👍👍

반응형

댓글