일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 알고리즘
- spring security
- 2018 KAKAO BLIND RECRUITMENT
- API
- 백준
- 라이브템플릿
- 문자열
- 최단경로
- algorithm
- springboot
- java
- 코딩테스트
- Spring
- Greedy
- 2981
- BFS
- 파이썬
- 소수
- applicationeventpublisher
- 프로그래머스
- javascript
- brute force
- 탐욕법
- Python
- counting elements
- codility
- beandefinitionstoreexception
- HTTP
- error
- Dijkstra
- Today
- Total
목록1day-1algorithm (50)
Altiora Petamus
2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 🤔생각해보기 문제에서 정답을 구하는 법을 다 설명해주는 쉬운 문제 중 하나이다. 성공 코드 from collections import deque N = int(input()) cards = deque([i for i in range(1, N + 1)]) while len(cards) > 1: # 카드뭉치의 윗장를 버린다. cards.popleft() # 아래로 옮긴다. cards.rotate(-1) # 남은 카드 한장 print(cards[0]) 코드에 특별한 ..
2981번: 검문 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간 www.acmicpc.net 🤔생각해보기 최소공배수를 구해야하는거 같긴한데 어떤 수의 최소 공배수를 구해야할지, 도무지 어떤 방법으로 접근해야할지 감이 안와서 여러가지 방법을 시도했지만 시간 초과나 실패가 발생했다... 타 블로그를 참고해보니 '입력값들의 차이가 일정하며 그 차이들의 최대공약수의 약수가 정답'이라는 정보를 얻고 로직을 만들어봤다. 성공 - PyPy3가 아니라 Python3로 제출 import math N = int(input()) nums = sorted([int(input()) for _..
11650번: 좌표 정렬하기 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 🤔생각해보기 파이썬의 정렬은 람다를 사용할 수 있다. 다중 조건일 경우 튜플로 넣어주면 되므로 아주 간단하게 해결할 수 있다. 성공 코드 N = int(input()) position = sorted([tuple(map(int, input().split())) for _ in range(N)], key=lambda x: (x[0], x[1])) for pos in position: print(*pos) 갑자기 ..
문제 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. 이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다. 아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다. 입력 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 ..
Reference https://programmers.co.kr/learn/courses/30/lessons/17678?language=python3 아래 풀이 방법은 제가 푼 방식으로 정해와는 차이가 있을 수 있습니다. 문제 풀이 언뜻 보기엔 쉬워보였지만 문제의 의미나 입출력의 상관관계를 이해하기가 힘들어서 생각보다 오래 걸렸던 것 같다. 해결하기 위한 순서는 다음과 같다. 시간을 비교해주기 위해서 문자열로 된 시간 단위를 분으로 변환한다. 정규식 활용 waiting 이라는 배열을 선언해주고 이 안에 분으로 변환된 시간을 오름차순으로 정렬하여 담아둔다. 셔틀의 운행횟수만큼 반복하면서 대기열에서 차례대로 셔틀에 탑승시킨다. 마지막 셔틀에 자리가 남는다면 콘은 마지막 셔틀의 도착시간에 대기열에 들어가면 된..
Reference 프로그래머스 문제 풀이 제시된 규칙에 맞게 단계별로 풀어나가면 된다. 처음 생각난 것은 정규식을 활용하여 푸는 방법이지만 정규식은 왠지 사용하려고하면 기억이 나질 않는다(...) 기본 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. ⇒ lower() 를 사용하면 간단 new_id에서 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. ⇒ isalnum() 과 활용 new_id에서 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. ⇒ 반복문을 돌면서 '..' 를 '.' 으로 replace new_id에서 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. new_id가 빈 문자열이라면, new_id에 "a" 를 ..
Reference 백준 10250번 문제풀이 처음 문제로 보이는 그림을 보면 2차원 배열을 사용해서 푸는걸까라는 생각이 들기 쉽다. 물론 2차원 배열로도 풀 수 있지만, 훨씬 쉬운 방법을 통해 풀 수 있다. 문제를 잘 읽어보면 6층 호텔의 10번째 손님은 4층의 객실에 배정된다. 만약 14번째 손님이라면? 2층에 배정된다. 즉 N / H 의 나머지값이 배정받을 객실의 층 수가 된다. 비슷한 로직으로 객실의 번호는 몫 + 1이 된다. 그렇다면 나머지가 0일 경우엔 어떻게 해야할까? 6번째 손님의 경우 601호에 배정되야 하지만, 나머지가 0이므로 층수를 알 수가 없어진다. 12번째 손님도 마찬가지이다. 나머지가 0일 경우 호텔의 층 수가 배정받을 객실의 층 수가 된다. 객실 번호는 몫이 된다. T = in..
Reference 백준 2869번 문제 풀이 이 문제를 푸는데 있어 중요한 키워드는 다음과 같다. 매일 올라가고 (+) 미끄러지고 (-) 목표 높이까지 (조건문 and 반복문) 이 점에 착안하여 현재 위치를 저장할 변수와 날짜를 카운트할 변수를 선언, 초기화해주고 최종적으로 카운트를 출력해주면 해결할 수 있다. A, B, V = map(int, input().split(" ")) position = 0 dayCount = 0 while position = V: break position -= B print(dayCount) 하지만 이런 단순한 풀이로는 시간복잡도를 통과할 수 없다. 언제나 그렇듯... 예제 입력 100 99..