
오늘은 DFS/BFS 알고리즘 문제를 풀어보려 한다.우선 DFS/BFS 알고리즘에 대해 잘 모르는 분들은 다음 포스팅을 참고하자. [알고리즘] DFS(Depth-First Search) 알고리즘이란? BFS(Breadth-First Search) 알고리즘이란?오늘은 DFS / BFS 알고리즘에 대해 알아보자.그래프를 탐색할 때 주로 사용되는 두 가지 대표적인 탐색 방법이 바로 DFS(깊이 우선 탐색)와 BFS(너비 우선 탐색)이다.이 두 알고리즘은 탐색 순서와 사dandev.tistory.com 문제는 다음과 같다.주어진 숫자 배열 numbers에서 각 숫자 앞에 + 또는 -를 붙여서 만든 식의 결과가 target이 되는 경우의 수를 구하자. 🧠 문제 접근DFS(깊이 우선 탐색)를 이용해 모든 경우의..

오늘은 카카오의 코딩테스트 기출 이모티콘 할인 행사 문제를 풀어보려고 한다.난이도 Lv.2라 쉽게 봤는데 생각보다 빡셌다.(체감상 Lv.3에 가까운 Lv.2가 아닌가 싶다.) 📝 문제 간단 요약이 문제는 다음과 같은 상황을 다룬다.카카오톡에서 이모티콘 플러스 가입자를 늘리고 싶어 한다.이모티콘마다 10%, 20%, 30%, 40% 할인율 중 하나를 선택해 판매할 수 있다.유저는최소 몇 % 이상 할인해야 살지 결정한다.살 이모티콘 총합 금액이 일정 기준을 넘으면 구매를 취소하고 플러스 서비스에 가입한다.목표는 두 가지다.가입자 수를 최대로 만든다.가입자 수가 같다면 매출을 최대로 만든다. 🤔 어떻게 접근할까?문제를 처음 보면 어떻게 할인율을 정해야 하나? 라는 고민이 든다.하지만 할인율이 4가지 뿐이..

오늘은 DFS / BFS 알고리즘에 대해 알아보자.그래프를 탐색할 때 주로 사용되는 두 가지 대표적인 탐색 방법이 바로 DFS(깊이 우선 탐색)와 BFS(너비 우선 탐색)이다.이 두 알고리즘은 탐색 순서와 사용하는 자료구조가 다르다.아래에서 개념과 동작 원리, 그리고 Python, Java, Kotlin 코드 예제까지 함께 살펴보자. DFS (Depth-First Search) 란?DFS는 깊이 우선 탐색이라고도 불린다. 말 그대로 그래프의 깊은 부분을 우선적으로 탐색하는 알고리즘이다.DFS 동작 원리스택(stack) 자료구조를 사용하거나 재귀(recursion) 로 구현할 수 있다.하나의 분기를 최대한 따라가면서 탐색을 진행하다가, 더 이상 갈 곳이 없으면 되돌아오면서 다른 분기를 탐색한다.동작 과정 ..

오늘은 2022 KAKAO TECH INTERNSHIP 기출 문제를 풀어보려한다. 문제 링크는 다음과 같다. 나는 코틀린으로 문제를 풀었다. 문제를 정리해보자. ✅ 문제 핵심1. 주어진 설문지(survey)와 사용자의 선택(choices)을 통해 성격 유형을 결정하는 문제이다.2. 성격 유형은 4개의 지표로 구분되며, 각 지표마다 두 가지 유형 중 점수가 높은 쪽을 선택한다.3. 설문 항목마다 “비동의” 쪽, “동의” 쪽에 각기 다른 성격 유형이 매핑된다.예) “AN”이면 비동의 시 A, 동의 시 N이 점수를 얻는다.4. 선택지는 총 7단계이며, 4를 기준으로1~3 → 비동의 쪽이 점수 획득5~7 → 동의 쪽이 점수 획득4 → 점수 없음.5. 각 선택지에 따른 점수는 다음과 같다.매우 비동의 / 매우 ..

Kotlin에서 Double 타입은 기본적으로 null이 들어올 수 없지만, JSON → DTO 변환 시 생각보다 큰 함정이 있다. 이번 글에선 Double? + @Field NotNull 조합이 언제 꼭 필요한지 정리해봤다. 🤔 문제의 시작: JSON 필드 누락예를 들어, 아래와 같은 API 요청 DTO가 있다고 하자.data class CreatePoiRequest( val latitude: Double, val longitude: Double) 클라이언트가 아래처럼 요청을 보낸다면?{ "longitude": 126.9769}→ latitude 필드가 빠져 있다. Kotlin primitive 타입(Double)은 절대 null이 안 들어온다.Kotlin에서 Double은 primiti..

오늘은 2023 KAKAO BLIND RECRUITMENT 기출 문제를 풀어보려한다.문제 링크는 다음과 같다.나는 코틀린으로 문제를 풀었다. 문제를 정리해보자.✅ 문제 핵심개인정보 수집일과 약관 유효기간이 주어진다.모든 달은 28일까지 있다고 가정 → 1개월 = 28일개인정보는 수집일 + 약관 유효기간(월 수)만큼 지난 다음 날부터 파기해야 한다.오늘 날짜(today)가 파기 시작일(= 수집일 + 유효기간)과 같거나 이후라면 해당 개인정보를 파기 대상에 포함시킨다.결과는 파기 대상 개인정보 번호(1번부터 시작)를 오름차순으로 반환한다. ✅ 자료구조 설계terms 정보:"A 6", "B 12"처럼 약관 종류와 유효기간(월)을 문자열 배열로 받음.이를 쉽게 조회하기 위해 Map 으로 변환 (약관 종류 -..

fun main() { val n = 5 val coins = mutableListOf(3, 2, 1, 1, 9) coins.sort() var target = 1 for (i in 0.. target) break target += coins[i] } println("target = $target")} 처음에는 완전 탐색으로 접근해야하나? 라는 생각이 들었다.(물론 책 카테고리가 그리디 알고리즘이지만 내가 문제를 보고 제일 먼저 드는 생각은 완전 탐색이었다.)target이 1씩 증가하면서 최솟값을 찾아야겠다는 생각 때문에 근데 완전 탐색의 경우N개의 동전으로 만들 수 있는 모든 부분집합을 고려하면 부분집합 개수는 2^N 개N이 최대 1,000개면 최악의 ..

우선 필자가 처음에 작성한 틀린 코드를 공개한다. fun main() { var n = 5 val member = mutableListOf(1,2, 4,3,1) member.sort() var cnt = 0 while(n > 0) { if (member[n - 1] n n = 0 } } println("cnt = " + cnt)} 정리되지 않은 코드이기도 하고 로직자체도 억지로 끼워맞춘 느낌인데 공개하는 이유는여기서 필자가 착각한 부분이 '공포도가 높은 모험가'에게 집착했다는 것이다.'공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참야해야한다.' 는 문제를 읽고 '아..! 공포도 X가 큰 걸 ..
- Total
- Today
- Yesterday
- 해커랭크 자바 챌린지
- 22 정보처리 산업기사
- Kotlin
- JPA
- 알고리즘
- 해커랭크
- challenges
- 그리디
- 정보처리산업기사
- 자바
- hackerrank
- 정보처리산업기사 공부법
- ORM
- 정보처리 산업기사
- 이코테
- Java
- 디버깅
- 소스코드
- 코틀린
- 자바의 정석
- 강의
- 코드
- 해커랭크 자바
- Spring Security
- hackerrank challenges
- 챌린지
- 22 정보처리산업기사
- 풀이
- 해커랭크 챌린지
- 백준
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |