목록프로그래머스/0단계 (66)
연습장

먼저 모든 문제를 다 기록하려고 했으나. 비슷한 느낌의 문제도 많고 단순한 문제도 많아서 풀이는 따로 적지 않고 넘어갔다. 문제의 난이도는 쉬운문제도 있고 어려운 문제도 있었다. 어려운문제는 나만 어려운게 아닌걸 알려주듯 정답률이 낮고 푼 사람이 적었다. 다른 사람 풀이는 조금 어려운게 많았지만 그래도 보고 배울점이 많았다. 아쉬운점은 예제는 맞췄으나 제출시 오류가 날 경우 어떤 반례로 틀렸는지 알려주지 않아서 조금 답답했다. 0단계를 다풀면 배지 ? 도장? 스탬프 를 준다는 소문을 들었다. 그래서 열심히 풀었는데 안줬다. 그래서 찾아보니 정작 정해진 문제는 따로 100문제가 있었다. 그래도 점수는 많이 오른거 같아서 좋다. 현재 상황

Q. 0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요. 단순히 더하게 된다면 '582' + '734' = '582734' 가 되고 Number(a) + Number(b) 로 하면 1316이 나오지면 2번째 예시의 경우에는 계산이 되지않는다. 16 자리가 넘어가게되면 계산이 되지않는 문제가있다. 따라서 다음과 같이 해결하였다. // 16자리 이상 계산시 오류 // 1. 문자열을 뒤집고 // 2. 배열로 만들어서 // 3. 같은 인덱스 끼리 더하고 // 4. 10이상일 경우 다음 인덱스에 1 추가하고 -10 해준다. // 5. 배열을 합치고 // 6. 다시 뒤집는다. // 문자열 뒤집는 함수 const revStr = fu..

문제 자체는 직관적 이해가 되는 문제이다. 하지만 풀려고 하면 어렵다. 바깥 테두리를 하나의 사이클로 보고 반복문을 사용하였다. count = 입력되는 숫자 바깥 while 문 1번의 테두리 -> n (끝좌표) 값과 a (시작좌표) 값이 1번 바뀌게 된다. 안쪽 while 문 4개는 각각 왼쪽으로 이동, 아래로이동, 오른쪽으로이동, 위로이동 을 하게된다. function solution(n) { var answer = []; let count = 1; for (let i =0 ; i

Q. 문제 이해부터 해보자면 1번 예시 빈칸이 안전 지역이라고 생각하면된다. -> 16칸 2번 예시 -> 13칸 3번 예시 -> 0 칸 배열의 크기는 1*1 부터 100*100 까지 이며 지뢰에 대해서 주변이 모두 위험지역이 된다. 1번 예시의 경우로 보면 이렇게 본다면 어떨까? 지뢰와 위험지역을 모두 1로 놓고 전체 지역의 크기 5*5 - (배열안 원소의 합) = 25 - 9 = 16 이 된다. 2번 예시의 경우 25 - 12 = 13 이 된다. 그렇다면 어떻게 지뢰 주변 지역의 원소를 1로 만들 수 있을까 ? 1. 먼저 지뢰가 어디있는지 찾고 2. 지뢰의 좌표보다 -1 , +1인 지역의 좌표를 1로 바꾸면 된다. 위험지역의 값을 바꿀때는 board 의 범위를 벗어나지 않도록 i 와 j 의 값을 잘 통..

Q. 선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요. lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 그림으로 나타내면 다음과 같습니다. 문제의 이해를 돕기위해 나머지 예시 케이스도 그려보겠다. 2번째의 경우 점에서 겹치는건 영향을 주지않고 선분이 겹치는게 없으므로 0이 된다. 3번째의 경우 1-9까지 => 8칸 3선분이 겹치는 3-5 구간은 추가로 영향을 주지 않는것을 알 수 있다. 1. 겹치는 구간은 1단위로 계산을 한다. 2..

Q. 점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다. [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요. 1. 기울기를 구하는 함수를 만든다. 2. 4개의 점 중에서 2개를 선택하여 기울기를 구한다. 3. 나머지 2개의 점의 기울기를 구한다. 4. 두 기울기의 절대값이 같으면 평행이다. 1. 기울기는 기울어진 정도, x 변화량에 따른 y 변화량이다. 식으로 쉽게 표현해보면 우리가 입력받는 값은 2차원 배열인데 각각은 점의 x와 y 좌표가 들어있는 총 4개의 점이라고 볼 수 있다. dots = [..

Q. 최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다. 빈도수를 세는 문제는 객체로 만들어서 풀면 이해하기 편하다. 1. 객체로 만든다. 빈 객체 dic 를 만들고 배열 array 의 원소가 dic 에 존재 할 경우 해당 value 값을 1 증가 없을 경우 해당 value 값을 1로 만든다. let array = [1, 2, 3, 3, 3, 4] let dic = {} for (i of array){ if(i in dic){ dic[i] += 1 } else { dic[i] = 1 } } console.log(dic) // { '1'..

Q. 첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요. 예시 1번 1/2 + 3/4 = 5/4 예시 2번 9/2 + 1/3 = 29/6 이 문제의 해결에는 총 2가지 과정이 필요하다. 1. 분수의 덧셈 2. 기약분수로 표기 1. 분수의 덧셈 분수의 덧셈은 잘 알겠지만 분모를 통일하고 분자를 더하는것인데 간단하게 하자면 분모끼리 곱하면 분모가 통일이 되며 이후 증가된 분자값 끼리 더하면된다. num1 = 분자 num2 = 분모 라고 하면 다음과같이 표시할 수 있다...

Q. 문자열 binomial이 매개변수로 주어집니다. binomial은 "a op b" 형태의 이항식이고 a와 b는 음이 아닌 정수, op는 '+', '-', '*' 중 하나입니다. 주어진 식을 계산한 정수를 return 하는 solution 함수를 작성해 주세요. 주어진 문장을 공백( ' ' ) 기준으로 쪼개면 [ 1 , 2 , 3 ] 구조로 나뉘는데 1번은 첫번째 숫자 num1 2번은 op 기호 문자 3번은 두번째 숫자 num2 가 들어있다 이를 각각 변수에 저장하고 if 문을 이용하여 op가 + , - , * 인 경우에 대해 각각 처리해주었다. function solution(binomial) { binomial = binomial.split(' ') let num1 = parseInt(binomi..