내 맘대로 공부
article thumbnail
[프로그래머스] 비밀지도

Q. 문제 설명 생략 ex) 입출력 예시 매개변수 값 n 5 arr1 [9, 20, 28, 18, 11] arr2 [30, 1, 21, 17, 28] 출력 ['#####', '# # #', '### #', # ## ', '#####' Thinking Process 처음에는 지도라는 생각에 이차원 배열을 생성하는 것부터 생각했다 하지만 풀면서 이차원 배열은 필요가 없어졌고, 여기서의 핵심은 이진수로 변환해서 두 개의 값을 합치는 것이기에 toString으로 2진수로 변환하고, replace로 1인 부분은 '#', 0은 ' '로 변환해서 결과를 리턴해야겠다고 생각했다. Code 1. 첫 번째 풀이 function solution(n, arr1, arr2) { let result = []; for (let i..

article thumbnail
[프로그래머스] 숫자 문자열과 영단어

Q. 질문 설명 생략 ex) 입출력 예시 s result 'one4seveneight' 1478 '23four5six7' 234567 '2three45sixseven' 234567 '123' 123 Thinking Process 우선 숫자를 영어로 표시한 배열, 일시적으로 값을 담을 value 변수, 결과를 담을 result 변수를 만들고, for문으로 하나씩 value에 담아서 value의 값을 배열이 가지고 있을 경우, index 값을 찾고 result에 넣고 다시 value를 초기화하한다. 만일 요소를 Number로 변환했을 때 NaN이 아닌 경우는 숫자인거니까, 그대로 result 변수에 넣는 방식을 생각했다. Code function solution(s) { const arr = ['zero',..

article thumbnail
[프로그래머스] 최소 직사각형

Q. 질문 설명 생략 ex) 입출력 예시 sizes result [[60, 50], [30, 70], [60, 30], [80, 40]] 4000 [[10, 7], [12, 3], [8, 15], [14, 7], [5, 15]] 120 [[14, 4], [19, 6], [6, 16], [18, 7], [7, 11]] 133 Thinking Process 문제를 잘 살펴보면 한 가지 규칙이 있는 것을 발견했다. 배열 안의 모든 요소를 내림차순으로 정렬을 하고, 가로와 세로의 길이 중 가장 큰 수를 곱하면 그것이 모든 명합을 수납할 수 있는 가장 작은 크기이다. 그러려면 먼저 모든 요소를 내림차순으로 정렬하고 그 중 가장 큰 수를 뽑아 곱하면 되겠다 Code function solution(sizes) { ..

article thumbnail
[프로그래머스] 삼총사

Q. 문제 설명 생략 ex) 입출력 예시 number result [-2, 3, 0, 2, -5] 2 [-3, 2, -1, 0, 1, 2, 3] 5 [-1, 1, -1, 1] 0 Thinking Process 서로 다른 n 개 중에 순서에 상관없이 3개를 뽑아 그것의 합이 0이면 된다 => 조합 이전에 작성한 글인 구슬 나누는 경우의 수 문제처럼 조합을 이용하는 문제이지만, 그것보단 좀 더 복잡해진 방식이다. 조합을 이용해서 모든 경우의 수를 구하고, 그 중 세개 요소의 합이 0인 것의 갯수를 뽑아내면 되니까 아주아주 단순하지만 맘에는 들지 않는 for문과 조합을 뽑아내는 재귀함수 방법이 떠올랐다. Code 1. for 문 function solution(number) { let result = []; ..