1. 문자열을 배열로, split()

split은 단어 그대로 문자열을 잘라서 배열 형태로 저장시키고 문자열의 값은 변하지 않는다.

let str = "Angel";
let arr = str.split();
console.log(arr); // ['Angel']

arr = str.split('');
console.log(arr); // ['A', 'n', 'g', 'e', 'l']


let str2 = "hello nice to meet you";
let arr2 = str2.split(' ');
console.log(arr2); // ['hello', 'nice', 'to', 'meet', 'you']

 

 

2. 배열을 문자열로, join()

join은 배열의 각 요소를 합쳐서 문자열로 반환하고 배열의 값은 변하지 않는다.

let arr = ['hello', 'nice', 'to', 'meet', 'you'];
let str = arr.join();
console.log(str); // hello,nice,to,meet,you

str = arr.join(' ');
console.log(str); // hello nice to meet you


let arr2 = ['A', 'n', 'g', 'e', 'l'];
let str2 = arr2.join('');
console.log(str2); // Angel

 

 

 

 

문제 

Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of the line i is at (i, ai) and (i, 0). Find two lines, which, together with the x-axis forms a container, such that the container contains the most water.

Notice that you may not slant the container.

 

 

입출력

Example 1:

Input: height = [1,8,6,2,5,4,8,3,7]
Output: 49
Explanation: The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49.

 

Example 2:

Input: height = [1,1]
Output: 1

 

Example 3:

Input: height = [4,3,2,1,4]
Output: 16

 

Example 4:

Input: height = [1,2,1]
Output: 2

 

 

제약

Constraints:

  • n == height.length
  • 2 <= n <= 10^5
  • 0 <= height[i] <= 10^4

 

 

코드

var maxArea = function(height) {
    let maxSize = 0;
    let startX = 0;
    let endX = height.length-1;
    
    while(startX<endX) {
        let size = Math.min(height[startX], height[endX]) * (endX-startX);
        maxSize = Math.max(maxSize, size);
        
        if(height[startX]<height[endX]) startX++;
        else endX--;
    }
    return maxSize;
};

 

 

 

문제 

다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다.

다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.)

 

입력

첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수 또는 0이다.

 

출력 

첫째 줄에 필요한 세트의 개수를 출력한다.

 

예제

입력:

9999

출력

2

 

 

코드

let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('');
let numArr = [10];

input.sort((a, b) => a-b);

for(let i=0; i<10; i++) {
    numArr[i] = input.lastIndexOf(i.toString())+1;
    if(numArr[i] != 0) {
        input.splice(0, numArr[i]);
    }
}

let nine = numArr.splice(9, 1, 0)[0];
let six = numArr.splice(6, 1, 0)[0];
let maxNum = Math.max(...numArr);

if(Math.ceil((nine+six)/2) >= maxNum) console.log(Math.ceil((nine+six)/2));
else console.log(maxNum);



설명

문제가 생각보다 간단했다. 6과 9의 개수를 더하고 2로 나눠서 올림한 값이 6, 9를 제외한 숫자 중에서 개수가 제일 많은 숫자의 개수를 비교해서 더 큰 수를 출력하면 된다.  

 

 

+ Recent posts