본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Bronze 3][Python] 14614번 : Calculate!

by 빛밤하늘 2021. 7. 4.
반응형

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

 

14614번: Calculate!

입력의 첫째 줄에 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B ≤ 108, 1 ≤ C ≤ 10100)

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

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


# 입력의 첫째 줄에 A, B, C를 공백으로 구분해 입력합니다.
# 각각 정수형으로 변환합니다.
A, B, C = map(int, stdin.readline().split(' '))

# A에 B를 C번 XOR했을 때
# A에 B로 한 번 XOR 연산한 뒤, 또 B로 XOR 연산하면 그대로 A가 나옵니다.
# 따라서 연산 횟수를 짝수일 때, 홀수일 때로 나누어 생각하면 됩니다.

# C가 짝수라면
if C % 2 == 0:
    # A 그대로 출력합니다.
    print(A)
# C가 홀수라면
else:
    # A에 B로 XOR 연산을 한 결과를 출력합니다.
    print(A ^ B)

결과

 

처음에 제출했을 때는 XOR 연산의 특징을 생각하지 않고 무작정 문제의 내용대로

A에 B를 C번 XOR 연산하는 코드를 제출했더니, 시간 초과가 나왔습니다.

 

그래서 코드를 따로 짜서 입력과 출력을 확인해보니 똑같은 수로 계속 XOR 연산하면

XOR 연산한 결과와 XOR 연산하지 않은 결과가 반복적으로 나온다는 것을 알게되었습니다.

그리고 맞았습니다 결과를 볼 수 있는 코드를 제출할 수 있었습니다.

 

 

 

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

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

반응형

댓글