썸네일 프로그래머스: 등굣길 문제 설명계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다.아래 그림은 m = 4, n = 3 인 경우입니다. 가장 왼쪽 위, 즉 집이 있는 곳의 좌표는 (1, 1)로 나타내고 가장 오른쪽 아래, 즉 학교가 있는 곳의 좌표는 (m, n)으로 나타냅니다.격자의 크기 m, n과 물이 잠긴 지역의 좌표를 담은 2차원 배열 puddles이 매개변수로 주어집니다. 오른쪽과 아래쪽으로만 움직여 집에서 학교까지 갈 수 있는 최단경로의 개수를 1,000,000,007로 나눈 나머지를 return 하도록 solution 함수를 작성해주세요. 제한 사항격자의 크기 m, n은 1 이상 100 이하인..
썸네일 프로그래머스: 정수 삼각형 문제 설명 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다.삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제한 사항삼각형의 높이는 1 이상 500 이하입니다.삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다. 입출력 예triangleresult[[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]]30 문제 풀이function s..
썸네일 프로그래머스: 네트워크 문제 설명네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다.컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오.제한 사항컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다.각 컴퓨터는 0부터 n-1인 정수로 표현합니다.i번 컴퓨터와 j번 컴퓨터가 연결되어 있으면 computers[i][j]..
썸네일 프로그래머스: 타겟넘버 문제 설명n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다.-1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1-1+1+1 = 3+1+1+1-1+1 = 3+1+1+1+1-1 = 3사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.제한 사항주어지는 숫자의 개수는 2개 이상 20개 이하입니다.각 숫자는 1 이상 50 이하인 자연수입니다.타겟 넘버는 1 이상 1000 이하인 자연수입..
썸네일 프로그래머스: 다리를 지나는 트럭 문제 설명트럭 여러 대가 강을 가로지르는 일차선 다리를 정해진 순으로 건너려 합니다. 모든 트럭이 다리를 건너려면 최소 몇 초가 걸리는지 알아내야 합니다. 다리에는 트럭이 최대 bridge_length대 올라갈 수 있으며, 다리는 weight 이하까지의 무게를 견딜 수 있습니다. 단, 다리에 완전히 오르지 않은 트럭의 무게는 무시합니다.예를 들어, 트럭 2대가 올라갈 수 있고 무게를 10kg까지 견디는 다리가 있습니다. 무게가 [7, 4, 5, 6]kg인 트럭이 순서대로 최단 시간 안에 다리를 건너려면 다음과 같이 건너야 합니다.경과 시간 다리를 지난 트럭 다리를 건너는 트럭 대기 트럭0 [] [] [7,4,5,6]1~2 [] [7] [4,5,6]3 [7] [4] [5,6]4 [7] [4,5] [6]5 ..
썸네일 프로그래머스: 올바른 괄호 문제 설명괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어"()()" 또는 "(())()" 는 올바른 괄호입니다.")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다.'(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요.제한 사항문자열 s의 길이 : 100,000 이하의 자연수문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다. 입출력 예sanswer"()()"true"(())()"true")()("false"(()("false 문제 풀이function solution(..
썸네일 프로그래머스: 프로세스 문제 설명운영체제의 역할 중 하나는 컴퓨터 시스템의 자원을 효율적으로 관리하는 것입니다. 이 문제에서는 운영체제가 다음 규칙에 따라 프로세스를 관리할 경우 특정 프로세스가 몇 번째로 실행되는지 알아내면 됩니다.1. 실행 대기 큐(Queue)에서 대기중인 프로세스 하나를 꺼냅니다.2. 큐에 대기중인 프로세스 중 우선순위가 더 높은 프로세스가 있다면 방금 꺼낸 프로세스를 다시 큐에 넣습니다.3. 만약 그런 프로세스가 없다면 방금 꺼낸 프로세스를 실행합니다. 3.1 한 번 실행한 프로세스는 다시 큐에 넣지 않고 그대로 종료됩니다.예를 들어 프로세스 4개 [A, B, C, D]가 순서대로 실행 대기 큐에 들어있고, 우선순위가 [2, 1, 3, 2]라면 [C, D, A, B] 순으로 실행하게 됩니다.현재 실행 ..
썸네일 프로그래머스: 기능 개발 문제 설명프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한 사항작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.작업 진도는 100 미만의 자연수입니다.작업 속도는 100 이하의 자연수입니다...
썸네일 프로그래머스: 같은 숫자는 싫어 문제 설명배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면,- arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.- arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한 사항- 배열 arr의 크기 : 1,000,000 이하의 자연수- 배열 arr의 원소의 크기 : 0보다 크..
썸네일 자바스크립트 동작원리 자바스크립트를 사용하다보면 여러 특이한 장면을 볼 수 있습니다. 예를 들어 이런 코드를 실행하고 싶다 칩시다.//1+1을 하고 1초를 쉰 후 2+2를 하고 그 후 3+3을 했으면 좋겠다! console.log(1+1) setTimeout(function(){console.log(2+2)},1000) //setTimeout = 몇초동안 쉬고 실행하라는뜻 console.log(3+3) 어디 자바스크립트로 한번 짜봅시다. 결과가 어떻게 나올까요? 첫쨰줄이 실행된 후 1초 쉰 후에 2번째 줄이 실행되는건 맞는데 그걸 기다려주지 않고 3번째 줄이 실행됩니다. 이처럼 자바스크립트는 다른언어랑 다르게 좀 특이한데요 오늘은 이러한 자바스크립트의 동작 원리에 대해 알아보겠습니다. 웹브라우저 위 사진은 웹브라우저를 나타낸..
[JS] 함수형 프로그래밍의 이해 함수형 프로그래밍 왜 우리(웹 프론트)는 함수형 프로그래밍을 배워야 할까요? 우리는 javascript를 써야 하는 운명 프로그래밍 방법에는 여러가지 패러다임이 존재합니다. 절차식 프로그래밍, 객체지향 프로그래밍, 함수형 프로그래밍 이런것들은 한번씩은 접해봤을법한 용어들입니다. 함수형 프로그래밍이 객체지향 프로그래밍보다 더 낫기 때문에 함수형 프로그래밍을 배워야 할까요? 아닙니다. 웹 개발을 하기 위해서 우리는 언어의 선택권이 없이 javascript를 해야만 하기 때문입니다. javascript 탄생비화 javascript를 창시한 Brendan Erich는 언어를 개발할 당시 유행하던 객체지향에 한계를 느끼고 LISP, scheme등 함수형 프로그래밍에 관심을 가지고 있었기에 함수형 프로그래밍의 형태..
썸네일 [NextJS] Cypress 테스트 코드 작성 해보기 매번 오류를 픽스할 때마다 느끼는 것이 있습니다. 바로.... 이 코드를 짠게 내가 맞나?? 왜 이렇게 했더라? 내가 작성했음에도 불구하고 30분은 다시 뜯어봐야 코드의 목적을 알 수 있는 경우들이 많았습니다. 그래서 오늘은 Cypress를 이용한 테스트 코드 작성법을 알아보려고 합니다! 코드 작성 이전에 테스트 코드에 대해 조금 알아보겠습니다. 테스트코드 작성의 목적 코드가 올바르게 작동하는가에 대한 확인 다양한 조건 및 입력에서 컴포넌트가 제대로 (예상대로) 작동하는지 확인 수월한 리팩토링을 위함 - 프로젝트가 성장하면 리팩토링이 필요하기 마련 → 테스트코드로 최소한의 기준, 안전망이 만들어짐 테스트코드 작성의 장점 작성한 코드가 기획 의도를 제대로 반영하였는지 확인 가능 기획자와의 소통 도구로 사용..