본문 바로가기

파싱

(5)
[Python] 2733번 Brainf*ck https://www.acmicpc.net/problem/2733 24/11/18  입력 커맨드를 제외한 brainfuck 인터프리터를 구현하는 문제이다. 문제의 핵심 부분은 괄호 쌍을 찾아서 넘어가는 부분이다. 문제 접근 방식:  구현의 용이성을 위해, 먼저 파싱부분과 인터프리터 부분을 나눴다.  기본적으로 파싱부분은 하나의 테스트 케이스를 입력받아서 프로그램에 해당하는 하나의 문자열을 내뱉는 함수로 구현했다. 하나의 테스트 케이스는 'end'만 적혀 있는 문자열로 구분된다. 따라서 'end'라는 문자열이 입력되기 전 까지 계속해서 입력을 받는다. 파이썬은 줄바꿈을 기준으로 문자열을 입력받기 때문에, while True를 사용하여 'end'를 입력 받을 때까지 계속 입력받도록 했다. 이후, 주석의 처리..
[Python] 4821번 페이지 세기 https://www.acmicpc.net/problem/4821 4821번: 페이지 세기 워드, 한글, 메모장과 같은 워드 프로세서에서 인쇄를 할 때, 페이지 범위를 직접 입력하여 지정할 수 있다. 예를 들면, 다음과 같이 입력할 수 있다. 10-15,25-28,8-4,13-20,9,8-8 사용자는 위처럼 인쇄 www.acmicpc.net 22/09/29 문자열 파싱 문제로, 난이도에 비해서 의외로 실수할 만한 부분이 곳곳에 분포해있었다. 문제 접근 방식: 이 문제를 2번 틀렸었는데, 문제에서 주어진 "만약, low > high인 경우에는 이 범위는 인쇄하지 않는다."라는 조건을 잘못 해석하여 이 범위를 영구적으로, 혹은 일시적으로 빼도록 구현을 해서 틀렸었다. 알고 보니, 그냥 저 경우일 때는 무시를..
[Python] 1340번 연도 진행바 https://www.acmicpc.net/problem/1340 1340번: 연도 진행바 평년일 때, 각 달은 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31일이 있다. 윤년에는 2월이 29일이다. 윤년은 그 해가 400으로 나누어 떨어지는 해 이거나, 4로 나누어 떨어지면서, 100으로 나누어 떨어지지 www.acmicpc.net 22/09/16 이 문제 또한 실버 5 밀기 중 만난 문제로, 실버 5치고는 재미있게 풀었던 문제였다.(난이도가 살짝 높지만, 실버 4 수준 정도는 아니라는 뜻) 문제 접근 방식: 날짜를 입력 받으면, 그 년도를 기준으로 하여 현재 날짜가 몇 퍼센트 지나갔는지를 출력하는 간단한 문제이다. 이 문제에선 윤년을 판단해야만 했기 때문에 cale..
[Python] 5637번 가장 긴 단어 https://www.acmicpc.net/problem/5637 5637번: 가장 긴 단어 단어는 알파벳(a-z, A-Z)과 하이픈(-)으로만 이루어져 있다. 단어와 다른 문자(마침표, 숫자, 심볼, 등등등...)로 이루어진 글이 주어졌을 때, 가장 긴 단어를 구하는 프로그램을 작성하시오. Apple의 www.acmicpc.net 22/09/14 그룹 채점 현황에 있는 무작위 문제를 풀었다. 어렵지 않은 실버 문제였다. 다만, 정규표현식을 사용하여 문제를 해결하지는 않았다. 문제 접근 방식: 태그랑은 조금 다르게 그냥 구현했는데, 일단 E-N-D가 나올 때까지 반복 입력받으므로 while문을 사용했다. 단어들을 모아놓는 words리스트를 먼저 선언했다. 이후 입력 받을 때마다 그 줄을 공백으로 분리하여..
[Python] 1551번 수열의 변화 1551번: 수열의 변화 (acmicpc.net) 1551번: 수열의 변화 첫째 줄에 수열의 크기 N과 K가 주어진다. N은 20보다 작거나 같은 자연수이고, K는 0보다 크거나 같고, N-1보다 작거나 같은 정수이다. 둘째 줄에는 수열이 ‘,’로 구분되어 주어진다. 수열을 이루 www.acmicpc.net 22/09/03 마찬가지로 그룹 연습에서 풀었던 문제이다. 문제 자체는 매우 쉬운 편으로, 문제에서 주어진 상황을 반복문으로 그대로 구현하면 된다. 문제 접근 방식: 그대로 구현했다. 개인적으로 글을 쓸 필요도 없을 정도로, 딱히 작성할 내용이 없다. 왜 브론즈 1인지 이해가 되지 않는다. 아래는 내가 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다. 더보기 # 1551번 수열의 변화 N, ..