본문 바로가기

문제 풀이

(29)
백준 10799 당최 어떻게 풀어야 할지 감이 오지 않았던 문제이다. 풀이 나는 위 문제를 풀기 위해 아래와 같은 연산을 생각했다.(문제 속 예제로 가정) 맨 왼쪽 위의 막대기부터 오른쪽으로 몇 개로 분리되는지 세어야 한다고 판단했다. 그래서, 3 + 2 + 5 + 5 + 2라는 연산이 나타나도록 코드를 설계해야 한다고 보았다. 이렇게 계산하는 것 말고는 정확한 계산을 할 수 없을 거라고 생각했기 때문이다. 그러나 이 아이디어를 구현하는 게 쉬운 일이 아니었다. O($n^2$) 연산, 재귀 함수를 활용해야 하나라는 생각이 많이 들었다. 그래도 어떻게든 아래와 같은 코드를 작성했다. import sys input = sys.stdin.readline system = input().rstrip() systems = [] l..
백준 1966 풀이 몇 번째로 나가는지 궁금한 대상을 index가 바뀌었을 때에도 어디에 위치해 있는지 어떤 방식으로 focusing 해낼 것인가가 관건이었다. 나는 그냥 정직하게 변수를 사용하여서 index의 번호를 직접 세도록 하면서 체크했다. 분명 관심 대상을 체크할 더 간단한 방법이 있을 텐데 도무지 생각이 나지 않았다. import sys from collections import deque input = sys.stdin.readline reps = int(input().rstrip()) for _ in range(reps): N, M = map(int, input().split()) priority = deque(list(map(int, input().split()))) goal = priority[M] ..
백준 2164 풀이 뭔가 시키는 대로 하면 틀릴 거 같아서, 손으로 먼저 풀어보았다. 두 가지 사실을 얻을 수 있었다. 1) 항상 짝수만 고려해도 된다. 2) N이 홀수면 뒤로 넘기기부터, N이 짝수면 버리기부터 하면 된다. 그리고 가능 입력이 N=1이 가능하므로 그것까지 고려해주어야 한다. import sys from collections import deque input = sys.stdin.readline N = int(input().rstrip()) # 짝수만 고려 nums = [i for i in range(N) if i % 2 == 0] q = deque(nums) while len(q) > 1: if N % 2 == 0: q.popleft() q.rotate(-1) else: q.rotate(-1) q.p..
백준 1920 풀이 처음에는 count 함수를 사용해서 코드를 제출하였으나 시간 초과로 문제 풀이에 실패하였다. 빠른 탐색 코드를 원하는 것 같아, 이분 탐색으로 시도하였다. import sys input = sys.stdin.readline N = int(input().rstrip()) N_nums = list(map(int, input().split())) M = int(input().rstrip()) M_nums = list(map(int, input().split())) # 이분 탐색을 위해 오름차순 정렬 N_nums.sort() def bin_search(start, mid, end, goal): # start와 end가 같아도 되는 경우는 존재, 그러나 아래의 경우는 불가 if start > end: ret..
설탕 배달 https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 나의 풀이 import sys input = sys.stdin.readline n = int(input().rstrip()) table = [float('inf')] * (n + 1) table[3] = 1 table[4] = -1 table[5] = 1 table[6] = 2 table[7] = -1 if n = by_three: table[i] = by_three if by_five != None and..
메뉴 리뉴얼 문제 https://school.programmers.co.kr/learn/courses/30/lessons/72411 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 combinations와 Counter를 사용하면 풀 수 있을 것 같다는 생각이 들었다. 나의 생각은 이랬다. 주문이 들어온 메뉴들에서 나올 수 있는 모든 조합을 구한 다음, 가장 많이 등장하는 조합을 찾아서 return 시키는 것이었다. 하지만 코드를 적으면서 이렇게 더럽게 적어도 되는 건가 싶은 생각이 들었다. 나에 대한 의심 속에서 적은 코드라 변수명도 엉망이고 그냥 전체적으..
2xn 타일링 문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 제한 사항 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 문제를 보고 든 생각 적어보면 뭔가 규칙이 보이지 않을까 싶었다.그래서 무작정 노트에 타일을 그렸다. 나의 아이디어 규칙이 보이긴 보였다.n이 짝수일 때마다 새로운 규칙이 만들어졌고, 타일이 늘어나는 개수도 규칙적인 모습이 있었다.하지만 이건 코드로 짤 수가 없는 규칙이라는 생각이 들었고 분명 다른 규칙성이 있을 것 같았다. 답답한 마음에 결국 검색을 이용했다. 검색을 통해 알게 된 내용 내가 규칙성을 찾기 위해 노트에 적은 그 내용들이 이미 ..
설탕 배달 문제 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그램 봉지와 5킬로그램 봉지가 있다. 상근이는 귀찮기 때문에, 최대한 적은 봉지를 들고 가려고 한다. 예를 들어, 18킬로그램 설탕을 배달해야 할 때, 3킬로그램 봉지 6개를 가져가도 되지만, 5킬로그램 3개와 3킬로그램 1개를 배달하면, 더 적은 개수의 봉지를 배달할 수 있다. 상근이가 설탕을 정확하게 N킬로그램 배달해야 할 때, 봉지 몇 개를 가져가면 되는지 그 수를 구하는 프로그램을 작성하시오. 제한 사항 첫째 줄에 N이 주어진다. (3 ≤ N ≤ 5000) 상근이가 배달하는 봉지의 최소 개수를 출력한다. 만약, 정..
인싸가 되고 싶은 민수 문제 제한 사항 문제를 보고 든 생각 이 문제를 풀기 전 별 하나짜리 문제에서도 좀 헤맸다는 느낌이 들었다. 아무래도 문제 풀기를 약 2주만에 해서 그런지 문제를 푸는 감이 없어진 것 같다. 물론 원래도 그렇게 있지는 않았지만. 솔직히 그렇게 어려울 거라고 생각이 들지 않았다. 그냥 구현 문제 같았다. 참 이상하게 약수를 어떻게 구할지 생각이 나지를 않았다. 심지어는 혼자서 "약수가 뭐였지" 이랬던 것 같기도 하다. 왜 이럴까^^... 나의 아이디어 마음에 들지 않았지만 이중 for문을 이용했다. 첫 번째 for는 약수를 찾을 정수를 읽을 용도로 두 번째 for는 각 정수의 약수를 찾을 용도로 그리고 약수는 모두 해시테이블에 담았다. 마지막에는 테이블을 정렬한 다음 출력을 시켰다. 결과 table = d..
뉴스 클러스터링 문제 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다. 개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 "카카오 신입 개발자 공채" 관련 기사를 검색해보았다. 카카오 첫 공채..'블라인드' 방식 채용 카카오, 합병 후 첫 공채.. 블라인드 전형으로 개발자 채용 카카오, 블라인드 전형으로 신입 개발자 공채 카카오 공채, 신입 개발자 코딩 능력만 본다 카카오, 신입 공채.. "코딩 실력만 본다" 카카오 "코딩 능력만으로 2018 신입 개발자 뽑는다" 기사의 제목을 기준으로 "블라인..