일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 싸피
- 배열 돌리기 5
- 14942
- 24955
- 설명
- 후기
- 카카오코드 본선
- 프로그래머스
- 카카오
- 10기
- 해결
- 인턴십
- SQL
- 142085
- SSAFY
- 오블완
- MySQL
- 정기 코딩 인증평가
- 핵심
- 소프티어
- 등산코스 정하기
- PCCP
- 수료
- 퍼즐 조각 채우기
- 산 모양 타일링
- 백준
- java
- 티스토리챌린지
- 숫자 이어 붙이기
- softeer
- Today
- Total
목록알고리즘 (74)
개발 쥬스

🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/64064 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 🔍 해결 과정DFS 및 백트래킹 과정으로 문제를 해결하였습니다. 문제에서는 user_id, banned_id 둘 다 최대 길이가 8이기 때문에 일반 구현으로도 문제를 해결하는 방법도 있지만, 저는 제일 처음 떠올랐던 아이디가 DFS를 활용한 조합 문제였습니다. 하지만 단순히 N개 중에서 M개를 선택하는 일반 조합 문제와는 다르게 이 문제는 banned_id에 들어 있는 필터링 이름들의 조건에 맞는 이름들을 user_id에..
🔗 문제 링크: https://www.acmicpc.net/problem/1106 🔍 해결 과정호텔 손님을 적어도 C명 확보하기 위해서 드는 비용을 구해야한다는 말에 주의가 필요했던 문제였습니다.적어도 C명을 확보해야함의 의미는 C명보다 많거나 같음을 의미합니다. 문제에서 C의 최댓값은 1000이고, N은 20보다 작거나 같으며 비용으로 한 번에 얻을 수 있는 고객의 수의 최댓값은 100명입니다. 이를 계산해보면 20번 동안 최대로 확보할 수 있는 고객의 수는 2000명이 됩니다. v명의 고객을 확보하기 위해 드는 비용을 cost라고 정의한다면 점화식을 세우기 위한 dp의 정의를 다음과 같이 할 수가 있습니다.dp[v] = cost (v 명의 고객을 확보하기 위해서 드는 최소 비용) 이를 바탕으로 ..

🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1837 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 🔍 해결 과정이 문제는 결론적으로 dp를 활용하여 해결할 수 있는 문제입니다.문제에서 k초 동안의 각 거점의 경로가 주어지는데 이 점을 활용하여 dp의 정의를 다음과 같이 생각할 수 있습니다.dp[t][v]: t초에 v지점에 위치했을 때 필요한 최소 수정 횟수 문제의 예시에서 gps_log와 dp의 관계를 기준으로 설명하겠습니다. 먼저 dp의 초기값들은 이동한 경로 정보가 없으므로 INF(Infinity)로 초기화를 해줍..
🔗 문제 링크: https://www.acmicpc.net/problem/1038 🔍 해결 과정조합을 활용하여 감소하는 숫자를 구하였습니다. 감소하는 숫자이므로 각 자리마다 9부터 0까지 선택하며 감소하는 형태의 숫자로 만들었습니다.해결 과정은 다음과 같습니다.1️⃣ 최대 감소하는 숫자는 9876543210이므로 10자리 숫자이다. 즉 한자리부터 10자리까지 반복문을 구성하면서 조합을 진행한다.2️⃣ Long 자료형으로 구성된 List 자료구조 result를 만들어 감소하는 숫자를 담아낼 공간을 마련한다.3️⃣ 반복문을 활용하여 한자리의 경우부터 10자리 경우까지 조합을 진행한다.3️⃣ 배열을 통해(코드에서 arr 배열) 각 자리마다 숫자를 하나씩 선택하며 감소하는 형태의 숫자를 완성하고 이를 re..
🔗 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/150366# 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 💬 회고점일반적인 구현 문제였지만, MERGE 명령어를 구현하는 과정에서 많은 시간이 소요되었습니다. 최종적으로는 union 기법을 활용해 MERGE의 내용을 구현했고, MERGE에서 둘 중 하나만 값을 가지고 있으면 그 값으로 업데이트 하는 것에서 로직 오류가 있었습니다. 해당 오류를 고치는 과정에서도 시간이 걸렸습니다. 결국 원인을 찾아서 해결했지만,union 기법을 다양하게 활용할 수 있다는 생각을 들게 해주는 ..
🔗 문제 링크: https://www.acmicpc.net/problem/13549 🔍 해결 과정일차원 배열을 활용한 BFS 유형의 문제로 다음과 같은 과정으로 문제를 해결하였습니다.1️⃣ 각 좌표에 도달할 때 나올 수 있는 최소 시간의 정보를 저장할 정수형 배열 d를 정의한다.2️⃣ d 테이블의 초기값을 무한으로 초기화해준다. (코드에서는 10억으로 설정)3️⃣ BFS를 활용하여 왼쪽, 오른쪽, 순간이동 하는 경우에서의 시간을 계산해 준 다음 d 테이블에서 최소 시간을 계속 계산해준다.4️⃣ BFS 완료후 d 테이블에서 동생이 위치한 d[k] 값을 반환해준다. ✏️ 코드import java.io.*;import java.util.ArrayDeque;import java.util.Arrays;im..