전체 글
-
[프로그래머스/JavaScript] 튜플 (Feat. replace?, Set?)IT Study/프로그래머스 2023. 12. 3. 18:57
위 문제 풀이 시작합니다. 👿 1. 문제 접근 "일단 저 요상한 데이터 형식을 배열 안의 배열 형식으로 바꿔야겠다!" 고 생각했습니다. (1) 맨 앞, 맨 뒤에 중괄호 2개를 빼자. {{2},{2,1},{2,1,3},{2,1,3,4}} → 2},{2,1},{2,1,3},{2,1,3,4 (2) 모든 { 를 빼자. 2},{2,1},{2,1,3},{2,1,3,4 → 2},2,1},2,1,3},2,1,3,4 (3) `},`가 마치 / (슬래시)와 같이 문자들을 구분해주니, 이 구분자를 기준으로 문자열을 분할하여 배열에 담자. 2},2,1},2,1,3},2,1,3,4 → [ '2', '2,1', '2,1,3', '2,1,3,4' ] (4) 분할된 문자열의 배열을 배열 안의 배열로 변환하자. [ '2', '2,1'..
-
[프로그래머스/JavaScript] 타겟 넘버 (Feat. DFS.. 재귀함수.. 너 뭔데)IT Study/프로그래머스 2023. 12. 1. 14:01
이 문제를 처음 봤을 때에는 어떻게 접근해야 할지 도무지 감이 오지 않았습니다. DFS, BFS를 제 손으로 구현해본 적이 없었기에 더욱 주춤하게 되는 문제였는데요. 문제를 풀어낸 과정에 대해 블로그 글로 정리하고자 합니다. 1. 무지성으로 들이대기 function solution(numbers, target) { var answer = 0; // 1. total (numbers 합계) 구하기 const total = numbers.reduce((accVal, curVal) => { return accVal + curVal; }) // 2. purpose ((total - target) / 2) 구하기 const purpose = (total - target) / 2; // 3. numbers 내에서 합..
-
[Android/Kotlin] 앨범, 주사위, 명언 앱 만들어보기 (Feat. GitHub)IT Study/Android 2023. 11. 10. 16:00
안녕하세요! 이번 블로그 글에서는 제가 현재 제작 중인 앱에 대한 내용을 공유해보려고 합니다. 이번에는 기존에 정리하던 블로그 대신 깃허브에 주로 내용을 정리하고 있어서, 해당 앱의 개발 내용과 코드를 더 상세하게 확인하실 수 있습니다. 아래 링크를 통해 깃허브 저장소로 이동하셔서 프로젝트의 진행 상황을 확인해보세요. 혹시나 피드백이나 협업에 관심이 있으신 분들은 언제든지 연락 주세요... (ㅎㅎ) 더보기 three email : 1soelkim@gmail.com 1. BTS 앨범 앱 GitHub - 1three/kotlin-album-bts: [Kotlin] BTS 사진을 볼 수 있는 `안드로이드` 앨범 앱 [Kotlin] BTS 사진을 볼 수 있는 `안드로이드` 앨범 앱. Contribute to 1..
-
[Android/Kotlin] 인프런 강의 시작! (Feat. [왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린)IT Study/Android 2023. 11. 8. 21:28
안드로이드 시작합니다! (아, 재밌겠다!!!!!!) 1. 파일 구성 MainActivity (화면에 있는 요소를 제어하는 파일) /res/layout/activity_main.xml (화면을 구성하는 파일, 레이아웃을 꾸미고 확인할 수 있는 파일) Gradle (라이브러리를 가져올 수 있는 폴더) /res/values/color.xml (컬러 팔레트 지정할 수 있는 파일) 2. 단축키 (MacOS 기준) import 시, Option + Enter 코드 정렬 시, Option + Cmd+ L 네이밍 변경 시, Shift + F6 찾아 모두 변경 시, Cmd + F, Cmd + R 3. 레이아웃의 종류 1) LinearLayout : 선형으로 쌓이는 구조 (빈 공간을 채우는 형태로 쌓이는 구조, 수평/수직..
-
[알고리즘] DFS, BFS 탐색 알고리즘 (Feat. JavaScript로 구현하기)IT Study/FE 2023. 11. 7. 16:07
탐색 알고리즘이란? 그래프의 모든 정점들을 특정한 순서에 따라 방문하는 알고리즘입니다. ⭐️ DFS(깊이 우선 탐색)이란? 시작점부터 갈 수 있는 정점까지 깊이있게 파고 드는 탐색 알고리즘 DFS 장단점 장점 1. 직관적인 코드, 구현이 용이 단점 1. 깊이가 깊어질수록 예측하기 어려운 메모리 비용 2. 최단 경로 파악 불가 DFS의 원리 *스택 (LIFO) push() : 배열 끝에 새로운 요소 추가 및 새로운 길이 반환 pop(): 배열의 마지막 요소 제거 및 그 요소 반환 A B D E F C G H I J 순으로 깊이를 기준으로 먼저 탐색하는 알고리즘입니다. 위 그림을 기준으로 DFS의 원리를 확인해보도록 하겠습니다. (1) A를 시작 정점으로, 스택에 A를 넣습니다. (스택 : A) (2) A를..
-
[프로그래머스/JavaScript] 타겟 넘버 (Feat. forEach 함수)IT Study/프로그래머스 2023. 11. 7. 14:26
📃 최종 코드 테스트 통과에 정말 많은 시간이 소요되었습니다. (왜인지 확인하기 위해 시간복잡도를 확인해 봤습니다.) 아래 코드에서 저는 먼저 numbers 배열의 합을 구한 뒤, 1부터 numbers 배열의 길이까지의 원소를 선택하는 모든 조합을 구합니다. 각 조합의 합이 목푯 값과 일치하는지 확인합니다. 이렇게 모든 조합을 구하는 과정에서 getCombine 함수를 사용하며, 이 함수는 numbers 배열의 각 원소를 기준으로 재귀적으로 조합을 구합니다. 따라서, 이 함수의 시간 복잡도는 O(2^n)입니다. 전체 코드의 시간 복잡도는 각 원소를 선택하는 경우의 수(2^n)와 원소를 선택하는 횟수(n)를 곱한 O(n * 2^n) function solution(numbers, target) { let ..
-
[프로그래머스/JavaScript] 베스트앨범 (Feat. 첫 Lv3)IT Study/프로그래머스 2023. 11. 6. 14:49
초기 코드 function solution(genres, plays) { // 베스트 앨범에 들어갈 노래의 고유 번호를 저장하는 Array let answer = []; // 장르 별 총 재생 수를 나타내는 Map let genreTotalPlayMap = new Map(); for (let i = 0; i < genres.length; i++) { const genre = genres[i]; const play = plays[i]; if (genreTotalPlayMap.has(genre)) { genreTotalPlayMap.set(genre, genreTotalPlayMap.get(genre) + play); } else { genreTotalPlayMap.set(genre, play); } } /..
-
[코딩테스트 후기] 애플리케이션 보안 기업 `모니터랩` (Feat. 첫 코테)IT Study/FE 2023. 11. 6. 13:27
안녕하세요. 지난주 토요일 `모니터랩` 회사의 코딩테스트를 보고 온 Three입니다. 먼저, 코딩테스트에 대한 결과는 아래와 같습니다. 2/5 (5문제 중 2문제 정답) 48/100 (100점 만점 기준 48점, 코딩테스트 통과 기준 80점 이상) 참으로... 속상한 결과인데요. 코딩테스트를 위해 제가 앞으로 나아가야 할 방향에 대해 정리하고, 스스로에 다짐을 하고자 블로그 글을 작성합니다. 🧪 시험 방식 기업 `모니터랩`의 시험은 프로그래머스를 통해 진행하였습니다. 180분 (3시간) 기준으로 시험이 치러졌으며, 줌이나 화면에 대한 모니터링 없이 진행되는 듯하였습니다. 📄 문제 리뷰 1번 문제는 비교적 난이도가 낮은 문제였습니다. 그러나 문제를 꼼꼼히 읽지 않아 놓친 부분이 있었습니다. 여러 테스트 케..