![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bBWN9K/btrImQOw4f4/DYlaDa0RTg4O769WsCKtEk/img.png)
📚 문제 입력 출력 예제 입력 1 10 4200 1 5 10 50 100 500 1000 5000 10000 50000예제 출력 1 6예제 입력 2 10 4790 1 5 10 50 100 500 1000 5000 10000 50000예제 출력 2 12🧑🏻💻 풀이 과정 입력받은 동전을 큰 액수부터 낮은 액수로 내림차순 정렬하자. 반복하면서 큰 액수부터 k를 나눈 값을 cnt에 저장하자. 나머지 연산을 통해 k에서 액수만큼 빼주자. #include "iostream" #include "vector" #include "algorithm" using namespace std; int n, k; vector v; int cnt = 0; int main() { cin >> n >> k; for (int i = 0..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/ckmBwY/btrH6HrGjx3/mCCN6gko16ba48ltELBOnK/img.png)
📚 문제 입력 출력 예제 입력 1 XXXXXX예제 출력 1 AAAABB예제 입력 2 XX.XX예제 출력 2 BB.BB예제 입력 3 XXXX....XXX.....XX예제 출력 3 -1예제 입력 4 X예제 출력 4 -1예제 입력 5 XX.XXXXXXXXXX..XXXXXXXX...XXXXXX예제 출력 5 BB.AAAAAAAABB..AAAAAAAA...AAAABB🧑🏻💻 풀이 과정 replace 함수를 이용해서 입력받은 문자 s의 XXXX를 AAAA로 변환하고, XX를 BB로 변환하자. if문을 이용해서 결과에 X가 포함되어 있으면 -1, 모두 변환에 성공했으면 결과를 출력하자. def polyomino(s): replace_s = s.replace("XXXX", "AAAA").replace("XX", "BB"..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b4FcWs/btrHZBejz5g/xFkb2uPwBqzzMVHFovBgek/img.png)
📚 문제 입력 출력 예제 입력 1 3 4 c..c ..c. ....예제 출력 1 0 1 2 0 -1 -1 0 1 -1 -1 -1 -1예제 입력 2 6 8 .c...... ........ .ccc..c. ....c... ..c.cc.. ....c...예제 출력 2 -1 0 1 2 3 4 5 6 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 1 2 0 1 -1 -1 -1 -1 0 1 2 3 -1 -1 0 1 0 0 1 2 -1 -1 -1 -1 0 1 2 3🧑🏻💻 풀이 과정 c의 등장여부를 판단할 변수 cloud와 구름의 이동 거리를 계산하기 위한 변수 move_cnt를 각각 선언하자. 입력받은 arr에서 한 단어씩 꺼내와서 각 조건으로 분기하자. 문자가 c면 0 append 및 이동거리를 1로..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/QzNE5/btrHKnmxy3N/YkA49WwVSzpKpGWnWEyz7K/img.png)
JWT JWT는 Json 포맷을 이용하여 사용자에 대한 속성을 저장하는 Claim 기반의 Web Token을 말한다. 세션은 서버에 사용자 정보를 저장하기 때문에 서비스를 이용하는 사용자가 많으면 그만큼 저장할 공간도 더 필요하며, 분산서버에서는 세션을 공유(A서버에 저장된 세션 ID로 B서버에서 인증)하는데 어려움이 존재하는 등의 단점이 존재한다. 이런 세션의 단점을 해결하기 위해서 토큰으로 인증하는 방법을 사용할 수 있는데, 유저가 로그인을 하면 서버에서는 토큰을 생성한 뒤에 저장하지 않고(stateless) 토큰값을 내려준다. 사용자는 이 토큰 값과 함께 서버에 요청하면 A서버든, B서버든 상관없이 토큰 값을 토대로 유저를 인증한다. 토큰 방식의 장점 세션관리를 할 필요가 없어 별도의 저장소가 필요..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/D9GK0/btrHKcxpu8o/Zi1ZkGksp0kAWWAkQnIwl0/img.png)
📚 문제 입력 출력 예제 입력 5 5 1 1 4 1 2 2 3 2 4 3 4예제 출력 1 4 3 2 0🧑🏻💻 풀이 과정 입력받은 graph로 dfs를 호출하자. 방문한 v에 대해서는 visited[v]를 True로 변경하고, 방문 순서를 answer[v]에 저장하자. (visited[4] = 2, visited[3] = 3, visited[2] = 4) 방문 순서는 내림차순이므로, graph를 내림차순 정렬하자. graph[v]의 노드를 반복하며, 방문하지 않은 노드를 발견하면, cnt를 1 증가 시키고, 해당 노드를 재귀 호출하자. 재귀호출이 끝나면, answer에 저장된 값을 반복하면서 출력하자. import sys sys.setrecursionlimit(10 ** 8) def dfs(v): glo..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/coDmiU/btrHDbMYfOn/Kn0Uyup1zaP7O3jxVKfbO1/img.png)
📚 문제 입력 출력 예제 입력 1 6 3 2 2예제 출력 1 5예제 입력 2 2 2 1 1예제 출력 2 3🧑🏻💻 풀이 과정 n개의 화분을 k만큼의 수분을 갖도록 초기화 하자. 화분의 수분이 0이 아닐 동안, 반복하면서 a개의 화분에 b씩 물을 주자. 모든 화분의 수분을 1씩 감소시키자. 화분의 수분이 적은 순으로 정렬하자.(그래야 매 반복마다 제일 수분이 적은 a개의 화분에 b씩 수분을 줄 수 있음.) day를 1 증가시키자. def watering(n, k, a, b): arr = [k] * n day = 0 while 0 not in arr: # A개의 화분에 B씩 물주기 for i in range(a): arr[i] += b # 모든 화분의 수분이 1씩 감소 for i in range(len(ar..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/AtZVm/btrHzokytZT/ycT9YV1bmYCzzY8jGcMWK0/img.png)
📚 문제 입력 출력 입력 예시 3 40 30 30출력 예시 140🧑🏻💻 풀이 과정 입력받은 levels를 내림차순 정렬하자. levels[0]과 levels[1] 중, 큰 값을 max_level에 저장해놓자. (첫 번째 값이 가장 크긴하겠지만..) levels[0]과 levels[1]의 합을 gold에 저장해놓자. 2부터 level의 길이까지 반복하면서, 저장 해놓은 max_level과 현재 레벨의 합을 gold에 더하자. def marble(levels): # levels[0]과 levels[1] 중, 큰 값을 저장해놓자. max_level = max(levels[0:2]) # levels[0]과 levels[1]의 합 저장. gold = sum(levels[0:2]) # 처음 두 레벨을 제외하고, ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/dBfynX/btrHnyoWghA/PGgwPyk1ZZIACHpxJM1rSK/img.png)
📚 문제 입력 출력 입력 예시 8 sbrus.txt spc.spc acm.icpc korea.icpc sample.txt hello.world sogang.spc example.txt출력 예시 icpc 2 spc 2 txt 3 world 1🧑🏻💻 풀이 과정 n만큼 반복하면서, 입력받은 문자에서 확장자명만 저장하자. 확장자명이 딕셔너리에 없으면 key=확장자명, value=0으로 초기화하고 +1, 있으면 그냥 +1 확장자명을 오름차순 정렬 후, 출력하자. def file_clean(n): ans = {} for _ in range(n): # 입력받은 문자에서 확장자만 저장하자. split_s = input().split(".")[1] # 확장자가 없으면 0으로 초기화한 후 1 더하고, 있으면 그냥 1 더..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/T6lxN/btrHiFzT9Pz/t0smSjU6ppBh3zijeBmGb0/img.png)
📚 문제 입력 출력 제한 입력 예시 2 21 22 23 24 25 26출력 예시 1🧑🏻💻 풀이 과정 입력받은 energy를 오름차순 정렬하자. 정렬된 리스트의 n번째 요소부터 n+n-1번째까지 요소를 가져 오자. 가져온 리스트의 가장 큰 값에서 가장 작은 값을 빼주자. def calculate_young_energy(energy): # 에너지 오름차순 정렬 후, 중간 값 가져오자. # n = 2면 4까지 -> 2, 3, n = 3이면, 6까지 -> 3,4,5 sorted_energy = sorted(energy)[n:n + n] # 리스트에서 가장 큰 값 - 가장 작은 값 return max(sorted_energy) - min(sorted_energy) n = int(input()) arr = lis..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/cWmNj9/btrG7XPV5eC/gb0uUvcrbNlaEFRsDV4qFk/img.png)
📚 문제 입력 출력 입력 예시 1 4 2 1 2 2 3출력 예시 1 4 3입력 예시 2 2 1 5 5출력 예시 2 0 0🧑🏻💻 풀이 과정 입력받은 초콜릿 개수를 오름차순 정렬하자. 반복하면서 현재 초콜릿 개수가 이전 초콜릿 개수와 같거나 크고, 가장 작은 초코릿 개수보다 크다는 조건이 만족된다면 현재 초콜릿 개수가 이전 초콜릿 개수와 같아질 때 까지 줄여주자. while문이 끝나면 day를 1 증가시켜주자. def take_away_chocolate(chocolate): day = 0 cnt = 0 min_chocolate_cnt = min(chocolate) for i in range(1, len(chocolate)): # 현재 초콜릿 개수가 이전 초콜릿 개수와 같거나 크고, 가장 작은 초코릿 개수보..
- Total
- Today
- Yesterday
- 노마드코더
- 백준
- 자료구조
- 리팩토링
- MySQL
- 김영한
- 알고리즘
- kotlin
- 스프링 부트
- Algorithm
- 코틀린
- Spring
- spring boot
- 릿코드
- mysql 8.0
- 구현
- webflux
- 코테
- 데이터베이스
- 파이썬
- Real MySQL
- 스프링부트
- 문자열
- 노마드
- 그리디
- 인프런
- 정렬
- 북클럽
- 스프링
- leetcode
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |