본문 바로가기
728x90

알고리즘322

[Python] 백준 2089 -2진수 https://www.acmicpc.net/problem/2089 2089번: -2진수 -2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 110 www.acmicpc.net 문제 해결 n이 주어졌을 때 n을 -2로 계속 나누어서 정답을 알아낼 수 있다. ex) n = -13 -13 = (-2)*7 + 1 7 = (-2)*(-3) +1 -3 = (-2)*2 +1 2 = (-2)*(-1) + 0 -1 = (-2)*1 + 1 1 = (-2)*0 + 1 => 110111 몫이 .. 2022. 12. 20.
[Python] 백준 11655 ROT13 https://www.acmicpc.net/problem/11655 11655번: ROT13 첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다. www.acmicpc.net 문제 해결 - 매우 쉬운 문제이다. - 사실 리스트 하나 만들고 ['A', 'B', ....] 해놓은 다음 나누기를 해도 되지만 ord(), chr()를 써서 메모리도 깔끔하게 쓰고 함수로 깔끔하게 푸는 것이 베스트이다. (ord()와 chr()을 써볼 수 있는 기회) CODE import sys input = sys.stdin.readline S = str(input().rstrip()) ans = '' for spell in S: if spell.isupper().. 2022. 12. 16.
[Python] 백준 1918 후위 표기식 https://www.acmicpc.net/problem/1918 1918번: 후위 표기식 첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 알파벳 대문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 www.acmicpc.net 문제 해결 - 하나씩 뺐을 때 문자/괄호/연산부호 분리해서 문자와 괄호,연산부호와 분리한다음 재배열을 해야한다. 어떻게 해야할까... => 문자는 그대로 출력하므로 뽑으면 바로 문자열에 이어 붙이고 괄호,연산부호는 stack 안에 넣은 후 배열 하는 것이 좋을 것이다. - 이제 순서에 대해서 고민을 해야하는데 이는 그림으로 생각을 해야지 편하다.(그림은 직접 그려보길 추천한다. 여러가지 경우가.. 2022. 12. 15.
[Python] 백준 17413 단어 뒤집기2 https://www.acmicpc.net/problem/17413 17413번: 단어 뒤집기 2 문자열 S가 주어졌을 때, 이 문자열에서 단어만 뒤집으려고 한다. 먼저, 문자열 S는 아래와과 같은 규칙을 지킨다. 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('')로만 이루어져 www.acmicpc.net 문제 전략 - '' 와 word 는 출력 값이 다른데 어떻게 구현할 것인가? - 띄어쓰기 마다 단어를 뒤집을 것인데 어떻게 표현할 것인가? => isalnum 을 사용해 alphabet이나 number가 아닌 것과 구별 아니면 띄어쓰기로 인식하고 reverse()를 이용하여 단어 뒤집기! import sys input = sys.stdin.readline if __.. 2022. 12. 14.
728x90