프로그래머스
프로그래머스 바닐라 JS 스터디 - 2주차
프로그래머스 바닐라 JS 스터디 - 2주차
2021.06.09시작 js코드를 작성하면서 기존에 알고있던대로 작성하다 굉장히 삽질을 많이했다. ❗️❗️ 그래서 구글링과 다른 사람들의 코드를 참조하며 과제를 수행했다. 📌 Component 단위로 작성하는 과정은 데이터의 갱신과 같은 Component간의 독립적이지만서도 연관되어 있는 부분이 존재한다면 이를 처리하기가 여간 번거로운것이 아니다. 여기서 오는 과정과 해결방법들에 대해 나는 어떻게 해결했는지, 다른 사람들의 코드는 어떤지 한번 살펴볼것이다. ✔️ 삽질1 삽질의 시작은 Component에서 데이터갱신에 대한 처리방법이다. todolist 데이터를 갱신처리하는 부분에서 newData를 handleSubmit안에 두고 값을 갱신했다. 이것은 나중에 한파일에 있었던 input Component를 분리하게 되면서 ..
프로그래머스 바닐라 JS 스터디 - 1주차
프로그래머스 바닐라 JS 스터디 - 1주차
2021.05.30시작 프로그래머스에서 참여형 유료 스터디로 바닐라 자바스크립트를 수강하게 되어 공부하며 미흡했던 내용을 정리하고자 합니다. Map vs Reduce Map의 경우에 Array.map((요소, 인덱스, 배열) => { return 요소 }); 실행하는 배열과 결과로 나오는 배열이 서로 다른 객체가 됩니다. 즉, 배열을 1대1로 매핑하게 되기 때문에 기존 객체를 수정하지 않는 메소드라고 정리할 수 있습니다. Reduce의 경우에는 Array.reduce((누적값, 현재값, 인덱스) => {return 결과값}, 초기값) 의 구조로 사용할 수 있습니다. 일반적으로 Reduce는 누적값을 구하는데 사용할 수 있지만, 데이터를 조회하며 리듀스 함수(콜백함수)를 실행합니다. 이를 통해 배열 형태에서 원하는 형태로 ..
프로그래머스 튜플(Java)
프로그래머스 튜플(Java)
2021.05.24소개 이 문제는 2019 카카오 개발자 겨울 인턴십으로 출제되었던 문제이다. 해당 문제에 대한 아이디어는 다음과 같다. 로직 1) 연속된 숫자를 추출하여야 한다. 2) 1의 목적을 위해서 자료구조 HashMap을 사용하였다. 3) HashMap의 경우 같은 Key라면 (default :1) +1 씩 더해주었다. 4) 결과적으로 Value (HashMap의 Key에 따른 Value) 로 내림차순하여 순서대로 Key값을 출력해 주었다. 구체화 해보면 다음과 같다. 이를 그림으로 도식화 하면 다음과 같다. 소스코드 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 32 33 34 35 36 37 38 39 40..
프로그래머스 행렬 테두리 회전하기
프로그래머스 행렬 테두리 회전하기
2021.05.21프로그래머스에서 삼성 역량 테스트에 기본 문제가 될 수 있는 좋은 문제를 찾아 풀어보았습니다. 콘솔화면에 맵에 저장되어 있는 값을 출력하며 방향에 따라 맵에 값이 갱신되는지 체크하며 문제를 해결하였습니다. 처음에는 for 문을 돌면서 확인해보려 했는데, DFS로 반복 탐색을 수행하면 코드 가독성을 높일 수 있을것이라 생각하여 DFS로 접근하였습니다. DFS로 접근 ⏤ 방향 정하기 DFS에 접근할 때 dir 1,2,3,4 로 구성하여 문제를 접근하였습니다. Main에서 DFS에 넘겨주는 params dir가 1, 2일 때 경우 처음 DFS를 진행할 때 시작 지점인 sx, sy에서 시작하는 것이 아닌 sx, sy+1 로 시작지점을 선택하였습니다. 이전 값은 세번째 인자로 전달하여 좌표는 다음 좌표를 바라보고..
프로그래머스 짝지어 제거하기
프로그래머스 짝지어 제거하기
2021.05.20이 문제를 처음 시도할 때는 for 문으로 순회하며 같은 알파벳이 있는 경우 (현재 인덱스, 다음 인덱스) 를 넘어가고 다음 알파벳을 체크 하였다. 로직을 수행할 때는 다음 순서를 따른다. 1) 현재 알파벳과 다음 알파벳을 비교 2) 새로 만든 문자열을 가지고 1번을 수행 TC는 통과했지만, 결국 시간 초과 가 났다. 그러면 어떻게 푸는것이 효과적일까? 정답은 Stack 은근 간단하다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import java.util.*; class Solution { public int solution(String s) { int answer = -1; char[] chas = s.toCharArray(); Sta..
프로그래머스 2개 이하로 다른 비트
프로그래머스 2개 이하로 다른 비트
2021.05.20프로그래머스에 새롭게 보이는 문제가 있어 도전하였습니다. 처음 문제에 접근할 때는 다음 로직으로 프로그래밍 하였습니다. 1) 주어진 숫자 N에 대해 이진수로 변경한다. 2) 주어진 숫자 N에 대해 순차적으로 1씩 증감시키면서 (1)에서 변경한 이진수와 비교하여 자릿수 숫자의 차이가 2개 이하인 경우에 대해 answer를 return 한다. 위 로직을 수행할 경우 시간 초과가 발생하게 됩니다. 생각해보면 numbers의 모든 수가 10의 15승이기 때문에 최악의 경우 10의 15승이 될 수 있기 때문에 사실상 정답이 될 수 없는 로직입니다. 그 다음 문제를 접근할 때는 규칙에 주목하였습니다. 문제에서 제공되는 예시를 가지고 생각해봤습니다. 7=0111 에 대해 다른 비트의 개수는 11=1011 이 됩니다...
완주하지못한선수 / k번째 수
완주하지못한선수 / k번째 수
2021.05.08Javascript로 두 문제를 풀어보았습니다. 관련해서 Javascript 문법이나 특이점을 정리해보고자 합니다. 1) 완주하지못한선수 HashMap을 사용해서 해결할 수 있는 문제였는데 Javascript에서 HashMap을 정의할 때 아래와 같이 사용합니다. HashMap에 데이터를 삽입한 후 for loop으로 데이터를 조회할 때에는 아래와 같이 사용합니다. 이 문제에서는 특별한 로직이 필요없습니다. 여러 풀이법이 있겠지만 HashMap을 이용하면 쉽게 접근할 수 있습니다. Code 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 function solution(participant, completion) { var ans..
프로그래머스 : JOIN
프로그래머스 : JOIN
2020.10.07https://programmers.co.kr/learn/courses/30/lessons/59042 이 문제는 입양을 간 기록은 있는데 보호소에 들어온 기록이 없는 동물의 ID 와 이름을 ID순으로 조회하는 SQL문을 작성하는것입니다. 어떻게 풀어야 할까...! 우선 테이블을 보면 ANIMAL_INS의 역할은 동물 보호소에 들어온 동물의 정보를 담는다. 반면에 ANIMAL_OUTS는 동물 보호소에 입양 보낸 동물의 정보를 담습니다. right join 즉, 오른쪽 테이블(ANIMAL_OUTS) 를 기준으로해서 무조건 ANIMAL_OUTS는 모두 보이는 형태가 됩니다. 그리고 ANIMAL_ID 값이 서로 같은 것을 기준으로 왼쪽 테이블(ANIMAL_INS)의 값을 불러오는데 '보호소에 들어온 기록이 없다..
알고리즘102 :: KAKAO_셔틀버스
알고리즘102 :: KAKAO_셔틀버스
2020.09.22몇번 읽고 문제가 잘 이해가 안되었습니다. ㅠ__ㅠ 그래서 몇 가지 검색해보다가 알게된 사실을 예제로 설명해 보겠습니다. example1) n=1, t=1, m=5, timetable=["08:00","08:01","08:02","08:03"] 셔틀은 09:00 부터 출발합니다. 셔틀은 1번 1분 간격으로 역에 도착하지만 한번에 5명을 태울 수 있으므로 08:00~08:03, (콘이 탈 시각 08:04) 모두 태울 수 있습니다. 따라서, example2) n=2, t=10, m=2, timetable=["09:10","09:09","08:00"] 마찬가지로 셔틀이 09:00 부터 출발하는것을 생각해보면 08:00 에 한명을 태웁니다. 셔틀이 총 2번 10분 간격으로 오기때문에 다음 올 셔틀은 09:10 ..
알고리즘 88 :: 프로그래머스_가장먼노드
알고리즘 88 :: 프로그래머스_가장먼노드
2020.06.031 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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 import java.util.*; class Solution { static boolean[][] map; static int cnt = 0; static int[] dist; static void BFS(int n, int start){ Queue q = new LinkedList(); q.add(start); dist[1] = 0; int max = Integer.MIN_VALUE; while(!q.isEmpty()){ int x = q.poll(); for(i..