알고리즘 정복하기!/백준 문제풀이

백준 6796번 Python / 구현, 시뮬레이션

by seokii 2022. 3. 4.
728x90
반응형

문제풀이 GitHub

https://github.com/Seokii/baekjoon

 

GitHub - Seokii/baekjoon: Daily Commit for Baekjoon

Daily Commit for Baekjoon. Contribute to Seokii/baekjoon development by creating an account on GitHub.

github.com

문제링크

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

 

6796번: Punchy

In the early days of computing, instructions had to be “punched” onto rectangular cards, one instruction per card. This card deck was then fed into a card reader so the program could be read and executed. Students put elastic bands around their card de

www.acmicpc.net

풀이

tmp = {'A': 0, 'B': 0}

while True:
    arr = input().split()
    if arr[0] == '1':
        tmp[f'{arr[1]}'] = int(arr[2])
    elif arr[0] == '2':
        print(f'{tmp[f"{arr[1]}"]}')
    elif arr[0] == '3':
        tmp[f"{arr[1]}"] =  tmp[f"{arr[1]}"] + tmp[f"{arr[2]}"]
    elif arr[0] == '4':
         tmp[f"{arr[1]}"] = tmp[f"{arr[1]}"] * tmp[f"{arr[2]}"]
    elif arr[0] == '5':
        tmp[f"{arr[1]}"] = tmp[f"{arr[1]}"] - tmp[f"{arr[2]}"]
    elif arr[0] == '6':
        tmp[f"{arr[1]}"] = tmp[f"{arr[1]}"] // tmp[f"{arr[2]}"]
    elif arr[0] == '7':
        break

매번 문제를 쉬운 그리디와 수학 관련 문제만 풀다가

난이도를 기준으로 잡고 알고리즘과 상관 없이 랜덤으로 문제를 뽑아 푸는 방식으로 공부법을 바꿨습니다.

전체 랜덤 문제를 뽑다가 영어 문제가 나왔습니다.. 그래도 브론즈 수준의 문제이기 때문에 문제를 풀었습니다.

문제는 간단하게 사용자의 입력을 받고

가장 첫 번째 숫자가 7가지의 지정한 명령을 수행하라는 의미이고

그 후에 등장하는 A, B, 혹은 임의의 숫자가 세부적인 명령 내용입니다.

1부터 7까지의 명령은 다음과 같습니다.

 

1 : 입력한 문자열에 입력한 정수를 정의합니다.

2 : 입력한 문자열에 대한 정의를 불러와 출력합니다.

3 : 입력한 앞 글자와 뒷 글자의 값을 불러와 덧셈을 수행하고 결과를 앞 글자의 변수에 정의합니다.

4 : 3과 동일하며 계산만 곱셈을 진행

5 : 3과 동일하며 계산만 뺄셈을 진행

6 : 3과 동일하며 계산만 나누기(나머지는 버림)를 진행

7 : 프로그램 종료(break)

 

처음엔 3~6이 계산을 진행하고 바로 출력하는 줄 알고 틀렸지만,

문제를 다시 읽고 간단하게 조건문을 사용해 위와 같이 구현했습니다.

영어 읽기가 귀찮을뿐 쉬운 문제였습니다...

 

 

728x90
반응형

댓글