본문 바로가기

구현

(72)
[Python] 20130번 Metroidvania Extreme https://www.acmicpc.net/problem/20130 20130번: Metroidvania Extreme 첫 번째 줄에는 지금까지 기록한 좌표의 수 k을 출력한다. 이후 k개의 줄에 걸쳐 기록한 순서대로 방문한 칸의 행 번호와 열 번호를 공백으로 구분하여 출력한다. www.acmicpc.net 22/10/08 독특한 아이디어가 돋보이는 BFS문제로, 일반적인 BFS가 아니라 더 재미있게 느껴졌던 문제이다. 문제 접근 방식: 일단 당연히 시작 지점부터 무지성으로 BFS를 진행하면 안 된다. 해당 알파벳의 대문자 지점은 해당 알파벳의 소문자가 열쇠인데, 그 열쇠를 얻어야만 대문자 지역을 지날 수 있다는 제약조건이 걸려있기 때문이다. 이 문제의 핵심 아이디어는, 대문자 지역을 방문했을 때 열쇠를..
[Python] 1924번 2007년 https://www.acmicpc.net/problem/1924 1924번: 2007년 첫째 줄에 빈 칸을 사이에 두고 x(1 ≤ x ≤ 12)와 y(1 ≤ y ≤ 31)이 주어진다. 참고로 2007년에는 1, 3, 5, 7, 8, 10, 12월은 31일까지, 4, 6, 9, 11월은 30일까지, 2월은 28일까지 있다. www.acmicpc.net 22/10/08 단순 구현 문제로, 파이썬의 datetime모듈을 사용했다. 문제 접근 방식: 파이썬의 datetime모듈에서 toordinal메서드를 활용하여 구현하였다. 이 메서드는 날짜를 입력받으면 1년 1월 1일로부터 그 날짜가 몇 일 지났는지를 반환하는 함수인데, 2007년 x월 y일이 2007년 1월 1일로부터 몇 일이 지났는가를 toordina..
[Python] 11719번 그대로 출력하기 2 https://www.acmicpc.net/problem/11719 11719번: 그대로 출력하기 2 입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이 www.acmicpc.net 22/10/08 의외로 몇 번 틀렸던 문제로, 오답의 원인을 알아내면서 의외의 수확을 거둘 수 있었던 문제였다. 문제 접근 방식: 구현하는 것 자체는 어렵지 않은데, 몇 번 틀렸었다. 그 이유는 input대신에 sys.stdin.readline을 사용했다는 점이다. 나는 이 문제를 try except구문을 사용해서 EOFError가 되면 종료하는 형식으로 했는데, sys.st..
[Python] 2877번 4와 7 https://www.acmicpc.net/problem/2877 2877번: 4와 7 창영이는 4와 7로 이루어진 수를 좋아한다. 창영이가 좋아하는 수 중에 K번째 작은 수를 구해 출력하는 프로그램을 작성하시오. www.acmicpc.net 22/10/07 약간의 아이디어가 있으면 쉽게 풀 수 있는 문제로, 사람에 따라 더 쉽게 느껴질 수도 있는 문제라고 생각한다. 문제 접근 방식: 문제 해결의 가장 큰 핵심은 이진수이다. 이 아이디어는 나열하다 보니 알게 되었다. 4 7 ---- 한 자릿수(2개 있음) 44 47 74 77 ---- 두 자릿수(4개 있음) 444 447 474 477 744 747 774 777 ---- 세 자릿수(8개 있음) 7을 1로, 4를 0으로 간주하면 마치 4와 7이 채워지는..
[Python] 2661번 좋은수열 https://www.acmicpc.net/problem/2661 2661번: 좋은수열 첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내는 수열만 출력한다. 수열을 이루는 1, 2, 3들 사이에는 빈칸을 두지 않는다. www.acmicpc.net 22/10/06 전형적인 백트래킹 문제로, 좋은 수열이 되는 조건을 잘 따라가며 시뮬레이션하면 되는 문제이다. 문제 접근 방식: 문제를 해설하기에 앞서, 먼저 N = 8일 때의 찾는 과정을 도식화한 그림을 보자. 우리는 좋은 수열 중 가장 작은 수열을 찾는 것이 목적이다. 이 그림은 이를 찾기 위해 3가지 조건을 지키면서 탐색을 진행하는 과정을 나타낸 것으로, 3가지 조건은 다음과 같다. 1. 가장 작은 수열..
[Python] 10994번 별 찍기 - 19 https://www.acmicpc.net/problem/10994 10994번: 별 찍기 - 19 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. www.acmicpc.net 22/10/02 흔하디 흔한 별 찍기 문제로, 재귀로도 구현할 수 있지만 그냥 규칙을 찾아서 이중 for문으로 구현하였다. 문제 접근 방식: 먼저, 나는 위와 아래의 모습이 가운데 선을 기준으로 대칭을 이루고 있다는 사실을 발견했다. 때문에 위의 절반까지만 출력하고, 아래 절반은 위의 절반의 코드를 그대로 인덱스만 거꾸로 한 채 출력하면 될 것이라고 생각했다. 칸 수를 보면, 1을 입력받을 때 위의 절반의 칸 수가 1, 2를 입력받을 때는 3, 3을 입력받을 때는 5이므로, 가로를 출력하는 i가 2*n - 1이 된다는 것을 알..
[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] 25640번 MBTI https://www.acmicpc.net/problem/25640 25640번: MBTI 진호는 요즘 유행하는 심리 검사인 MBTI에 관심이 많다. MBTI는 아래와 같이 네 가지 척도로 사람들의 성격을 구분해서, 총 $16$가지의 유형중에서 자신의 유형을 찾을 수 있는 심리 검사이다. 내향( www.acmicpc.net 22/09/29 단순 문자열 비교 문제이다. 문제 접근 방식: 먼저 진호의 MBTI를 입력받고, for문을 사용하여 진호의 MBTI랑 다른 사람의 MBTI와 같은지 비교한다. 같으면 total변수를 +1 시켜준다. 이후 total변수를 출력하였다. 아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다. 더보기 # 25640번 MBTI # 구현 j..