본문 바로가기

반응형

Algorithm

(62)
[JS로 코테 준비하기] 3. 프로그래머스 - 배열의 평균값(feat. reduce) https://school.programmers.co.kr/learn/courses/30/lessons/120817 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr JS Array - reduce 1. reduce reduce는 배열을 순회하며 각 요소에 대해 주어진 함수를 실행해 하나의 값을 반환함 reduce의 인자: 누산기(acc), 현재 값(cur), 현재 인덱스(idx), 원본 배열(src) 활용 예시) const arr = [1, 2, 3, 4]; const init = 0; const sum = (a, b) => a + b; const sumA..
[JS로 코테 준비하기] 2. 프로그래머스 - 각도기(feat. JS 분기 처리) https://school.programmers.co.kr/learn/courses/30/lessons/120829 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Javascript 분기 처리 방법 분기 처리를 할 때는 조건의 순서가 중요하다. 어떤 조건을 먼저 쓰느냐에 따라 결과가 달라지기 때문이다. (+ 깔끔한 코드 작성은 덤) 1. if - else 가장 직관적인 방법 function solution(angle) { if(angle < 90) return 1; else if(angle == 90) return 2; else if(angle < 180..
[JS로 코테 준비하기] 1. 프로그래머스 - 몫 구하기(feat. ~~) https://school.programmers.co.kr/learn/courses/30/lessons/120805 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Javascript로 몫 구하는 방법 1. parseInt function solution(num1, num2) { const answer = parseInt(num1 / num2); return answer; } 2. Math.floor function solution(num1, num2) { const answer = Math.floor(num1 / num2); return answer; }..
[JS로 코테 준비하기] 0. FE 개발자의 코딩테스트 언어 발단 나는 코딩테스트를 응시할 때 언어 선택에 있어 한 치의 고민도 하지 않고 C++로 풀어왔었다. 왜? 학부 시절 자료구조와 알고리즘 수업을 C++로 배웠고, 그 이후 당연하게 코딩 테스트도 C++로 준비를 해왔기 때문이다. 단순했다🤗. 그리고 동시에 알고리즘의 근본은 C++이지! 라는 진담 반 농담 반의 생각이 내재되어 있었다. python 바람이 불어오면서 주변에서도 python으로 코테를 응시하는 사람들이 늘어났지만, 나는 지금까지 쌓아온 익숙함을 버리기 싫어 C++만 고집했다. 사실 언어를 바꿔야 할 명확한 이유가 없었다. 근데 이제 와서 갑자기 Javascript를 ..? 약 두 달 전, 졸업을 앞두고 한 기업의 코딩테스트를 보았다. 당연히 C++로 보았고 4문제 중 3.1솔을 했다. 문제가 ..
[Algorithm] 프로그래머스 쿼드압축 후 개수 세기 c++ (시간초과) https://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 풀이 재귀(분할 정복) 2차원 벡터를 탐색하면서 내부의 수가 같은지 다른지 확인해야 함 정사각형이므로 좌측상단의 좌표(x,y)와 현재 길이(n)만 알면 탐색 가능 모두 같은 ..
[Algorithm] 백준 17822 원판 돌리기c++ https://www.acmicpc.net/problem/17822 17822번: 원판 돌리기 반지름이 1, 2, ..., N인 원판이 크기가 작아지는 순으로 바닥에 놓여있고, 원판의 중심은 모두 같다. 원판의 반지름이 i이면, 그 원판을 i번째 원판이라고 한다. 각각의 원판에는 M개의 정수가 적혀 www.acmicpc.net 풀이 시뮬레이션 주어진 조건 그대로 구현하면 된다. xi의 배수의 원판 구하기 배수를 구하는 법: xi만큼 계속 더한다 (j += xi) 원판 회전시키기 시계 방향: tmp에 이동 후 인덱스를 넣는다. 반시계 방향: tmp에 이동 전 인덱스를 넣는다. 인접한 수 확인하기 same은 인접하면서 수가 같은 것이 있으면 true, 없으면 false를 나타낸다. tmp배열은 시뮬레이션에 ..
[코딩 테스트 준비 - 기초] 10. BFS - 최단 거리, 최소 비용 1. BFS만으로 풀 수 있는 문제 DFS와 BFS의 목적은 임의의 정점에서 시작해서 모든 정점을 한 번씩 방문하는 것으로 동일하다. 따라서 모든 인접 정점을 방문하는 목적이라면 DFS와 BFS 중 아무거나 사용해도 상관없다. 하지만, BFS만을 사용해야 하는 문제들이 있다. 바로 모든 가중치가 1일 때, 최단 거리를 구하는 문제이다! cf. 가중치가 1이 아닌 경우 최단 거리를 구하는 문제는 Dijkstra로 푼다. BFS를 이용해 해결할 수 있는 문제는 아래 조건을 만족해야 한다. 최단 거리, 최소 비용 문제이어야 한다. 간선의 가중치가 1이어야 한다. 정점과 간선의 개수가 문제의 조건에 맞춰 해결할 수 있어야 한다. (O(V + E)내에 해결 가능해야 함) 간선의 가중치가 최소 비용의 의미와 일치해..
[코딩 테스트 준비 - 기초] 9. 그래프 - DFS & BFS 1. 그래프 G = ( V , E ) : 그래프는 정점(vertex)과 간선(edge)들의 집합이다. 방향 있는 그래프(유향 그래프) u -> v 방향 없는 그래프(무향 그래프) u - v 2. 그래프의 표현 다음 그래프를 표현하는 방법 세 가지를 알아보자. 1) 인접 행렬(Adjacency Matrix) 2차원 배열로 구현 장점: 임의의 두 정점 사이에 간선 존재 여부를 O(1)에 판단할 수 있다. 단점: 공간 낭비가 심하다 (O(V^2)) 효율성: O(V) 2) 인접 리스트(Adjacency List) 포인터 배열(vector)로 구현 장점: 공간을 효율적으로 쓴다. (O(E)) 효율성: O(정점의 차수) 3) 간선 리스트(Edge List) vector를 사용할 수 없는 환경에서 Linked Lis..

반응형