안녕하세요. 성조입니다. 이 문제는 Python 3 버전을 기준으로 풀이됐습니다. 문제 출처 https://www.acmicpc.net/problem/1010 1010번: 다리 놓기 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 그 다음 줄부터 각각의 테스트케이스에 대해 강의 서쪽과 동쪽에 있는 사이트의 개수 정수 N, M (0 < N ≤ M < 30)이 주어진다. www.acmicpc.net 문제 재원이는 한 도시의 시장이 되었다. 이 도시에는 도시를 동쪽과 서쪽으로 나누는 큰 일직선 모양의 강이 흐르고 있다. 하지만 재원이는 다리가 없어서 시민들이 강을 건너는데 큰 불편을 겪고 있음을 알고 다리를 짓기로 결심하였다. 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을..
안녕하세요. 성조입니다. 이 포스팅은 Python 3 버전을 기준으로 풀이됐습니다. 몇 차례 풀이했지만 결국 개선된 코드가 가장 빠른 응답을 가진 문제였습니다 문제 출처 https://www.acmicpc.net/problem/11478 11478번: 서로 다른 부분 문자열의 개수 첫째 줄에 문자열 S가 주어진다. S는 알파벳 소문자로만 이루어져 있고, 길이는 1,000 이하이다. www.acmicpc.net 문제 문자열 S가 주어졌을 때, S의 서로 다른 부분 문자열의 개수를 구하는 프로그램을 작성하시오. 부분 문자열은 S에서 연속된 일부분을 말하며, 길이가 1보다 크거나 같아야 한다. 예를 들어, ababc의 부분 문자열은 a, b, a, b, c, ab, ba, ab, bc, aba, bab, ab..
안녕하세요. 성조입니다. 이 포스팅은 Python 3 버전을 기준으로 풀이됐습니다. 동전 문제가 종종 보이는 것 같습니다. 이 문제는 그리디 알고리즘을 기반으로 만들어진 문제입니다. 문제 출처 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 문제 준규가 가지고 있는 동전은 총 N종류이고, 각각의 동전을 매우 많이 가지고 있다. 동전을 적절히 사용해서 그 가치의 합을 K로 만들려고 ..
안녕하세요. 성조입니다. 이 포스팅은 Python 3 버전을 기준으로 풀이됐습니다. 이번 문제를 풀이하면서 런타임 에러를 엄청 겪었고, 문제를 읽고 그대로 풀이했는데 생각보다 틀렸던 부분이 많았습니다. 이 문제 덕분에 append를 활용해서 데이터를 추가하는 것뿐 아니라 insert를 활용하는 방법 insert에는 insert(0, 요소) 또는 insert(len(변수), 요소)처럼 값을 대입할 수 있는 부분을 확인하고, 학습하여 조금 더 Python 언어랑 친해질 수 있던 것 같아서 좋았습니다. 문제 출처 https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하..
안녕하세요. 성조입니다. 이 포스팅은 Python 3 버전을 기준으로 풀이됐습니다. 부족한 부분이나, 올바르지 부분이 있다면 언제든지 댓글 부탁드리겠습니다. 조금 더 효율 좋은 방향으로 지도해 주시는 피드백도 감사히 받겠습니다. 문제 출처 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작..
안녕하세요. 성조입니다. 이 문제는 Python 3 버전을 기준으로 풀이됐습니다. 처음에 생각나는 데로 데이터 처리를 하는 로직을 쭉 구현했는데 정답은 나왔습니다. 출제자가 의도하는 해답의 형태로 결과를 얻어냈다는 것이 많이 기뻤지만 코드에 잔 로직이 많았고, 더 좋고, 효율적인 접근 방법이 많이 존재할 텐데 본인이 구현한 코드는 너무 난잡하지만 정답을 풀어냈다는 생각이 들어서 1차 통과 이후 2차 코드에서 가독성 증대를 위한 로직 간략화를 시도했습니다. 그렇게 시간도 줄일 수 있었던 부분이 존재한 문제였습니다. 문제 출처 https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은..
안녕하세요. 성조입니다. 이 포스팅은 Python 3 버전을 기준으로 풀이됐습니다. 문제 중간에 잘못 접근한 부분들이 존재해서 바로 바꾸고 다시 접근했습니다. 문제 출처 https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. (0 ≤ N ≤ 500) 출력 첫째 줄에 구한 0의 개수를 출력한다. 코드 import sys N = int(sys.stdin.readline()) cnt = 0 while N > ..
안녕하세요. 성조입니다. 이 문제들은 모두 Python 3 버전을 기준으로 풀이됐습니다. 문제를 평소에 묶어서 처리하지 않지만, 문제가 연관성이 높고 +연산과 -연산처럼 비슷한 로직에서 돌아가는 것 같아서 묶어서 포스팅했습니다. 문제 출처 https://www.acmicpc.net/problem/11931 11931번: 수 정렬하기 4 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net https://www.acmicpc.net/problem/15688 15688번: 수 정렬하기 5 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,0..