개발 공부/알고리즘 문제 풀이 36

[LeetCode] 6. ZigZag Conversion

문제 LeetCode 6. ZigZag Conversion https://leetcode.com/problems/zigzag-conversion/ ZigZag Conversion - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 언어 자바스크립트(JavaScript) 접근 방법 numRows 크기의 배열을 생성한다. 사이클의 크기를 계산한다. 사이클에 맞게 각 배열에 문자를 삽입한다. 각 배열의 문자를 합쳐 반환한다. 코드 /** * @param {string}..

[LeetCode] 3. Longest Substring Without Repeating Characters

문제 LeetCode 3. Longest Substring Without Repeating Characters https://leetcode.com/problems/longest-substring-without-repeating-characters/submissions/ Longest Substring Without Repeating Characters - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 언어 자바스크립트(JavaScript) 접근 방법 Loop와..

[LeetCode] 792. Number of Matching Subsequences

문제 LeetCode 792. Number of Matching Subsequences https://leetcode.com/problems/number-of-matching-subsequences/ Number of Matching Subsequences - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 언어 자바스크립트(JavaScript) 접근 방법 word의 한 글자씩 loop를 실행한다. s에 word의 글자가 존재하면 그 전의 글자는 모두 없앤다. s..

[LeetCode] 2. Add Two Numbers

문제 LeetCode 2. Add Two Numbers https://leetcode.com/problems/add-two-numbers/ Add Two Numbers - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 언어 자바스크립트(JavaScript) 접근 방법 Loop를 이용하여 푼다. l1, l2를 이용하여 현재 node의 val을 계산한다. l1, l2의 next가 모두 존재하지 않으면 loop를 종료한다. next가 하나라도 존재한다면, node의 ..

[프로그래머스] 이진 변환 반복하기

문제 프로그래머스 월간 코드 챌린지 시즌 1 이진 변환 반복하기 programmers.co.kr/learn/courses/30/lessons/70129 코딩테스트 연습 - 이진 변환 반복하기 programmers.co.kr 언어 자바스크립트(JavaScript) 접근 방법 재귀 함수를 작성하고 실행한다. 0을 제거한다. 제거 후 길이를 구하고 이를 이진 변환하여 재귀 함수를 호출한다. 코드 function solution(s) { const answer = [0, 0]; console.log(s) transfrom(s, answer); return answer; } const transfrom = (s, answer) => { const strWithoutZero = s.replace(/0/g,""); ..

[프로그래머스] 퀴드압축 후 개수 세기

문제 프로그래머스 월간 코드 챌린지 시즌 1 퀴드압축 후 개수 세기 programmers.co.kr/learn/courses/30/lessons/68936 코딩테스트 연습 - 쿼드압축 후 개수 세기 [[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15] programmers.co.kr 언어 자바스크립트(JavaScript) 접근 방법 재귀 함수를 작성하고 실행한다. 배열을 0 또는 1로 압축이되는지 확인..

[프로그래머스] 삼각 달팽이

문제 프로그래머스 월간 코드 챌린지 시즌 1 삼각 달팽이 programmers.co.kr/learn/courses/30/lessons/68645 언어 자바스크립트(JavaScript) 접근 방법 값을 모두 채웠는지 확인한다. 왼쪽 아래가 비는 경우 왼쪽 아래를 채운다. 다만 왼쪽 위도 비는 경우는 왼쪽 위를 먼저 채운다. 왼쪽 아래가 비지 않고 오른쪽이 비는 경우 오른쪽을 채운다. 왼쪽 아래, 오른쪽이 비지 않는 경우 왼쪽 위를 채운다. 코드 function solution(n) { const answer = []; const arr = getEmptyArr(n); arr[0][0] = 1; let x = 0; let y = 0; let value = 1; while(true){ // 값을 모두 채웠는지..

[프로그래머스] 다리를 지나는 트럭

문제 프로그래머스 다리를 지나는 트럭 programmers.co.kr/learn/courses/30/lessons/42583 언어 자바스크립트(JavaScript) 접근 방법 다리위 트럭을 이동시킨다. 다리를 건넌 트럭이 있으면 다리 위에서 제거한다. 다음 트럭이 다리 위에 올라갈 수 있다면 다리 위에 올린다. 모든 트럭이 다리를 건넜는지 확인하고, 아니라면 반복한다. 코드 function solution(bridge_length, weight, truck_weights) { let cnt = 0; let bridgeStateList = []; while(true){ cnt ++; // 모든 트럭 이동 bridgeStateList.forEach((bridgeState=>{ bridgeState.pos +..

[프로그래머스] 두 개 뽑아서 더하기

문제 프로그래머스 월간 코드 챌린지 시즌1 두 개 뽑아서 더하기 programmers.co.kr/learn/courses/30/lessons/68644?language=javascript 코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr 언어 자바스크립트(JavaScript) 접근 방법 n개 중에 r개를 뽑는 조합 배열을 생성한다. 조합 배열을 이용하여 두 개 뽑아서 더한 결과 배열을 생성한다. set을 이용하여 중복을 제거한다. sort를 이용하여 오름차순으로 ..

알고리즘 복잡도와 빅 오 표기법

알고리즘의 복잡도 알고리즘 문제를 풀다보면 작성한 코드의 복잡도가 얼마인지 명시해야할 때가 있다. 복잡도에는 시간 복잡도와 공간 복잡도가 있다. 요즘에는 공간 복잡도에 대한 중요성은 떨어지고 있어 일반적으로 알고리즘에서 복잡도라고하면 시간 복잡도를 의미한다. 시간 복잡도 함수인 알고리즘을 특정 크기의 input을 받아 실행할 때 걸리는 시간의 양을 의미한다. 공간 복잡도 함수인 알고리즘을 특정 크기의 input을 받아 살행할 때 필요한 메모리의 양을 의미한다. 빅 오 표기법 (Big O Notation) 알고리즘에서 빅 오 표기법이란 input의 크기 n이 증가할 때 시간 복잡도 또는 공간 복잡도가 어떻게 증가하는지 구분하기 위해 사용하는 표기법이다. 엄밀한 정의는 수학적이라 알 필요는 없을 듯하다. 알..