전체 글
[프로그래머스] 정렬 _ 가장 큰 수 / H-Index
2021_09_12 알고리즘 스터디 문제 풀이 1. 가장 큰 수 --> URL 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 programmers.co.kr 문제 처음에는 문제를 확인하고 자릿수가 작고 그 중에서도 큰 값을 기준으로 솔팅하면 된다고 생각했었다. 하지만 그럴 경우 입출력 예 2에 해당하는 정답이 "9533430"로 나오게 된다. 자릿수가 적은 것이 크기보다 우선으로 정렬이 되기 때문인데 가만히 생각을 하다보니 로직에 오류가 있다는 것을 깨닫고 수도코드를 새로 작..
[프로그래머스] 탐욕법(Greedy) _ 조이스틱
2021_09_05 알고리즘 스터디 문제 풀이 문제 URL 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 문제 수도코드 알파벳 상수 선언 'ABCDEFGHIJKLMNOPQRXTUVWXYZ' count = 0 temp -> name.length 만큼의 길이를 가진 'A'로 이루어진 문자열 let i = 0; while문으로 temp가 name과 같아질때까지 반복 name[i] temp[i]와 같지 않다면, 조이스틱을 써야 함 alphabet.indexOf(name[i]), 인덱스를 찾고, ..
[프로그래머스] 탐욕법(Greedy) _ 큰 수 만들기
2021_08_29 알고리즘 스터디 문제 풀이 문제 URL 코딩테스트 연습 - 큰 수 만들기 programmers.co.kr 문제 문제를 읽지마자 이건 조합알고리즘을 재귀로 구현하고, 그 중 제일 큰 수를 리턴하면 되겠다라고 생각이 들었다. 1차 문제풀이 function combination(letters, pickNum) { let arr = []; function aux(str, lastIdx) { if (str.length === pickNum) { arr.push(str); return; } for (let i = lastIdx + 1; i < letters.length; i++) { aux(str + letters[i], i) } } aux("", -1) return arr; } function..
[프로그래머스] 탐욕법(Greedy) _ 구명보트
2021_08_29 알고리즘 스터디 문제 풀이 문제 URL : https://programmers.co.kr/learn/courses/30/lessons/42885# 코딩테스트 연습 - 구명보트 무인도에 갇힌 사람들을 구명보트를 이용하여 구출하려고 합니다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없고, 무게 제한도 있습니다. 예를 들어, 사람들의 몸무게가 [70kg, 50kg, 80kg, 5 programmers.co.kr 문제 이 문제를 보고 든 생각은 우선 제일 무거운 순서대로 people 배열을 정렬하고, 제일 작은 요소를 순서대로 더했을 때 limit을 초과한다면 해당 요소들만을 같은 보트에 태우려고 했었는데 문제에는 분명히 '한 번에 최대 2명씩 밖에 탈 수 없고'라는 내용이 포함되..
[프로그래머스] 스택 (stack) / 큐 (queue) _ 다리를 지나는 트럭
2021_08_15 알고리즘 스터디 문제 풀이 문제 URL : https://programmers.co.kr/learn/courses/30/lessons/42583?language=javascript 코딩테스트 연습 - 다리를 지나는 트럭 트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 programmers.co.kr 문제 문제를 추론하는 과정에서 한 가지 이해가 어려웠던 게 있었는데, 트럭에 소요되는 시간에 대한 기준이었는데, 문제의 설명이 조금 부족하지 않았나 싶다. 문제의 인자로 주어지는 bridge_length 가 만약 2의 값을 가지고 있다면,..
[프로그래머스] 스택 (stack) / 큐 (queue) _ 프린터
2021_08_15 알고리즘 스터디 문제 풀이 문제 URL : https://programmers.co.kr/learn/courses/30/lessons/42587?language=javascript 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 문제 문제를 파악했을 때 stack의 shift, push 메소드를 통해 문제를 해결할 수 있을 거라는 생각이 들었다. 처음에는 문제를 보고 array map 메소드를 통해 { priority : number; index: number } 객체 형식을 원소로 갖는 배열..
자료구조 (data structure) / 큐 queue 정리
큐 (Queue) 오늘은 자료구조 중 queue, 큐에 대해 정리를 해보려고 한다 퀄리티는 별로지만 설명을 위해 직접 그린 자료를 첨부한다. queue는 First in First out, FIFO구조로 데이터를 저장한다. enqueue : 자료의 마지막에 데이터를 추가한다. dequeue : 자료의 첫번째 데이터를 삭제한다. queue를 간단하게 설명하자면, 놀이공원에서 기구를 타기 위한 줄을 예로 들 수 있을 것 같다. 기구를 타기 위해 줄을 선다고 가정하면, 뻔뻔한 사람이라 새치기를 할 배짱이 있는 게 아니라면 당연하게 현재 줄의 맨 뒤로 가야만 할 것이다. 그리고 그 줄의 제일 앞에 있는 사람이 놀이기구를 타기 위해 가장 먼저 줄에서 탈출 할 수 있는 사람이다. 큐에 대한 간략한 설명은 벌써 끝이..
[프로그래머스] 2018 카카오 블라인드 _ [1차]뉴스 클러스터링
2021_08_08 스터디 문제 풀이 문제 URL : https://programmers.co.kr/learn/courses/30/lessons/17677?language=javascript 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브 programmers.co.kr 문제 이번 주는 알고리즘한테 한바가지 맞았다. 우선 위 문제에서 다중집합의 처리가 조금 까다로울 뿐 이외는 구현이 어렵지 않다고 생각을 했고 곧바로 수도코드를 작성해나갔다 수도코드 // 1. newStr1, newStr2를 두 글자씩 끊어 집합을 만들어..
[프로그래머스] 2020 카카오 인턴십 _ 수식 최대화 (도른자)
2021_08_08 스터디 문제 풀이 문제 URL : https://programmers.co.kr/learn/courses/30/lessons/67257?language=javascript# 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 문제 이 문제도 도른놈이었다. 난이도별로 점진적으로 스터디 문제를 풀고 있다 보니 이제 온통 어려운 것들만 만나고 있다. 머리가 녹는다는 게 이런 기분일까 --- 우선 수도코드를 작성하기 전 문제를 탐색 했다. string타입의 expression 매개변수가 주어지는데,..
[프로그래머스] lv3 2019 카카오 블라인드_ 추석 트래픽
2021_07_18 문제 풀이 문제 URL : https://programmers.co.kr/learn/courses/30/lessons/17676?language=javascript getRangeDate(log)) > 맵핑, 각 로그들의 start, last가 객체형식으로 담겨진 배열 // 최초 로그의 시작 시점부터 1ms 단위로 데이트를 추가하고 (기준) / 마지막 로그의 종료 시점까지 // >> new Date(start) // 그 데이트를 기점으로 1000만큼씩 블록을 잡는다 (기준 ~ 기준 + 1s 범위) // blockStart = 기존 데이트 // blockEnd = 기존 데이트 + 1000ms를 한 값 // 해당되는 로그를 찾는다 //어떻게? // 경우 // 1. 로그의 시작점이 기준보다..
[프로그래머스] 2019 카카오 인턴쉽 _ 크레인 인형뽑기
2021_07_18 문제 풀이 문제 URL : https://programmers.co.kr/learn/courses/30/lessons/64061 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr 문제 board 판에서 moves의 원소들의 위치에 있는 제일 위에 있는 인형을 stack 형태로 담아서 저장하고, 2개 이상 중복되어 제거되는 인형들의 갯수를 리턴하는 문제였다. 의사코드 1. 삽질 // [[0,0,0,0,0], > board[j] === row // [0,0,1,0,3], // [0,2,5,0,1], j가 적을 수록 높은 ..
[React native / 리액트 네이티브] Grid 구현 방법, FlatList, numColumns, nativeEvent
자사 서비스는 웹을 기반으로 작업이 되어있었다. 그 후 어플을 런칭하면서 서비스 확장을 기대했고 1차적으로 webVeiw를 통해 안드로이드, ios 에서 볼 수 있도록 리액트 네이티브를 사용했었는데 webView로는 ux적인 경험이 부드럽지 못하다는 내부 결론이 도출되었고, 리액트 네이티브 (react-native)로 서비스를 모두 옮기는 작업을 진행하고 있는 단계이다. 완전히 몰두해서 일하기까지는 일주일 정도의 적응기를 가졌는데, 네이티브를 셋팅하는 데 너무 많은 변수 + xcode의 버릇없음 + 맥북의 대환장 먹통 파티에 3일정도를 썼고, 나머지 이틀은 ui가 복잡하지않은 페이지들을 작업하면서 공식문서를 계속 읽어가면서 작업했다. 그렇게 간단한 페이지 작업을 끝낸 후 grid 형태의 디자인을 구현했어..
[프로그래머스] 2020 KAKAO 블라인드 _ 문자열 압축
2021_07_11 문제 풀이 문제 URL : https://programmers.co.kr/learn/courses/30/lessons/60057 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문 programmers.co.kr 문제 의사코드 // s를 1부터 s.length 까지의 단위로 잘라 압축했을 때 가장 짧은 것을 리턴한다 // 결과를 담을 빈배열 변수 선언 // s의 길이만큼 while 문을 순회한다 ) 단위마다 s를 잘라보기 위함 변수 i 선언 // s를 일단 split으로 모두 쪼갠다 string.split ex ) [..
[프로그래머스] 2019 KAKAO 블라인드 _ 오픈 채팅방
2021_07_11 문제풀이 문제 URL : https://programmers.co.kr/learn/courses/30/lessons/42888?language=javascript 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 문제 의사 코드 // 방을 개설한 사람이 보게 되는 최종 메시지를 문자열 배열 형태로 return // 모든 유저의 아이디를 객체의 키로 저장, // Enter > 무조건 닉네임 포함 // Leave > 아이디 불포함 // Change > 덮어씌울 닉네임 포함 1. record를 f..
[프로그래머스] 2021 KAKAO 블라인드 _ 메뉴 리뉴얼
2021_07_04 문제 풀이 문제 URL : https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 문제 의사 코드 requirement // course 별로 주문이 가장 많이된 거 한개 넣기, 값이 다 똑같으면 다 넣으면 됨 // 최소 두명이상이 주문을 해야함 course를 순회하면서 아래 로직 처리 // orders를 filter메소드를 사용해서, 원소의 길이가 course 원소 이상인 것들만 필터링한다 (애초..