일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 2981
- beandefinitionstoreexception
- 파이썬
- BFS
- 소수
- 프로그래머스
- 코딩테스트
- 최단경로
- error
- applicationeventpublisher
- spring security
- javascript
- 백준
- 탐욕법
- 알고리즘
- Python
- Greedy
- springboot
- HTTP
- java
- Dijkstra
- 라이브템플릿
- brute force
- Spring
- counting elements
- codility
- 2018 KAKAO BLIND RECRUITMENT
- algorithm
- API
- 문자열
- Today
- Total
목록전체 글 (78)
Altiora Petamus
9370번: 미확인 도착지 (취익)B100 요원, 요란한 옷차림을 한 서커스 예술가 한 쌍이 한 도시의 거리들을 이동하고 있다. 너의 임무는 그들이 어디로 가고 있는지 알아내는 것이다. 우리가 알아낸 것은 그들이 s지점에서 www.acmicpc.net 🤔생각해보기 문제의 조건은 잘 읽어보면 간단하다. start → g → h → 목적지 start → h → g → 목적지 다익스트라 알고리즘을 활용하여 위 두 경로의 길이가 start → 목적지 의 최단 경로와 같은게 있다면 출력한다. 👨🏻💻코드 import sys import heapq def dijkstra(start): dist = {i: float('inf') if i != start else 0 for i in range(1, n + 1)} he..
코딩테스트 연습 - [1차] 다트 게임 programmers.co.kr 🤔생각해보기 문자열 다루는 능력을 묻는 문제. 난이도는 '하' 로 분류되어 있고 실제 정답률도 73.47% 로 어려운 문제에 속하지는 않지만, 문자열을 능숙하게 처리하지 못한다면 까다로울 수 있다. 로직은 문제에 잘 설명되있으며 천천히 과정을 구현해나가면 된다. 정규식을 활용하면 간단하게 문자열에서 원하는 부분을 추출하여 사용할 수 있다. 코드 정규식 group 활용 import re def solution(dart_result): p = re.compile(r"(?P\d+)(?P[SDT])(?P[*#]?)") point_data = { 'S': 1, 'D': 2, 'T': 3 } count = [] while dart_result:..
코딩테스트 연습 - [1차] 추석 트래픽입력: [ "2016-09-15 20:59:57.421 0.351s", "2016-09-15 20:59:58.233 1.181s", "2016-09-15 20:59:58.299 0.8s", "2016-09-15 20:59:58.688 1.041s", "2016-09-15 20:59:59.591 1.412s", "2016-09-15 21:00:00.464 1.466s", "2016-09-15 21:00:00.741 1.581s", "2016-09-1programmers.co.kr🤔생각해보기카카오에서도 난이도를 '상' 으로 분류했으며 해당 코테에서 가장 마지막 문제로 출제되었다. 꽤나 머리 아픈 문제니 한 번 차근차근 풀어보자.시간과 관련된 문자열 처리에는 시간을 초..
2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 🤔생각해보기 처음 떠올린 방법은, visited 와 똑같은 crashed 라는 배열을 만들어놓고 벽을 뚫었을 때 체크하는 방법과 3차원 배열을 활용해서 풀어보는 방법이다. 개인적으로는 2차원 배열도 머리가 복잡해져서 꺼리게 되는지라 3차원 배열 활용은 뒤로 미루고 crashed 라는 새로운 배열을 만들어놓고 활용해보려 했는데, 잘 안풀리고 오히려 더 복잡해져서 결국 1시간이나 더 써서 3차원 배열로 풀었다. (처음부터 그냥 곱게 3차원 ..
코딩테스트 연습 - 문자열 다루기 기본 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 programmers.co.kr 🤔생각해보기 문제는 추가적인 부연 설명이 필요없을 정도로 아주 간단하므로 바로 풀이로 넘어가보자. 정규식 import re def solution(s): return bool(re.match(r"^(\d{4}|\d{6})$", s)) 최종 결과를 Boolean 으로 return 해야하므로 bool() 을 사용해서 변환해준다. 중요한 건 내부 정규식인데, 구체적으로 설명하면 아래와 같다. ^ : 시작 문자 &..
TapeEquilibrium coding task - Learn to Code - Codility Minimize the value |(A[0] + ... + A[P-1]) - (A[P] + ... + A[N-1])|. app.codility.com 🤔생각해보기 문제 그대로 단순히 배열을 slice 하는 방식으로 풀었더니 시간복잡도 문제라 그런지 점수가 아주 짜게 나왔다. 그래서 Dynamic programming 으로 풀어보았다. 합을 저장해가는 배열을 만들어둔다. 그 배열에서 하나씩 꺼내서 연산을 진행하면, 다시 처음부터 합을 구할 필요가 없다. 첫번째 풀이 - Total score 61% def solution(A): result = 0 dp = [0] * (len(A) - 1) dp[0] = A[..
어떤 데이터베이스를 사용할지 정해지지 않은 상황에서 당장 Rest api 를 만들기 시작해야한다면 어떤 방법을 사용할 수 있을까요? 간단한 CRUD는 in-memory DB 를 구현하여 작성해놓으면 추후 DB가 정해졌을 경우 바로 교체하여 사용할 수 있습니다. 사실 테스트 용도로 자주 사용되는 H2 데이터베이스를 사용해도되지만, 직접 구현하며 흐름을 알아보도록 하겠습니다. 우선 lombok, Spring Web 정로만 선택하여 gradle 프로젝트를 생성해주겠습니다. db package 아래에 MemoryDbRepository interface 를 만들어줍니다. public interface MemoryDbRepositoryIfs { // Create T save(T entity); // Read Opt..
코딩테스트 연습 - 소수 찾기 한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 programmers.co.kr 🤔생각해보기 문자열을 한자리씩 판별하여 소수인지 확인해본다. 이 과정에서 소수인지 검사해야하므로 소수 체크 함수를 하나 만들어준다. 소수라면 따로 배열에 담아 놓는다. 한자리씩 검사가 끝났다면, 문자열을 다양한 조합으로 변형해야하므로 permutations 을 사용하여 모든 경우의 수를 만들어준다. set() 자료형을 활용하여 '3번'으로 생긴 경우의 수 중복을 제거한다. 숫자들이 소수인지 체크하고 '2번'을 실행한다. 소수들이 담긴 배열의 길이를..