본문 바로가기
문제 풀이/JavaScript

[자바스크립트 감잡기] 1일차 - split, map(Number), slice, trim, join

by Electrohyun 2026. 7. 8.


 

생각 과정

 

- 다른 코테 문제들 풀이와 달리 클로드에게 맡겨 문제 세트를 몇개 해결하는 방식이다. 부족할 수 있겠지만 이걸로 앞으로 코테 문제를 잘 풀 수 있게 준비해보고 싶다.

 

코드

 

1번 세트

// 드릴 1) 한 줄에 정수 하나. raw="5"  ->  숫자 5
function d1(raw) {
  return Number(raw);
}

// 드릴 2) 공백으로 구분된 두 정수. raw="3 5"  ->  [3, 5]
function d2(raw) {
  return raw.split(" ").map(Number);
}

// 드릴 3) 공백으로 구분된 정수들. raw="1 2 3 4 5"  ->  [1,2,3,4,5]
function d3(raw) {
  return raw.split(" ").map(Number);
}

// 드릴 4) 여러 줄 정수. raw="10\n20\n30"  ->  [10,20,30]
function d4(raw) {
  return raw.split("\n").map(Number);
}

// 드릴 5) 앞뒤 공백/개행 제거 후 숫자. raw="  42\n"  ->  42 체크
function d5(raw) {
  return Number(raw.trim().split("\n"));
}

// 드릴 6) 첫 줄은 개수 N, 그 다음 줄들은 "a b" 간선. 모르겠다...
//   raw="3\n1 2\n3 4\n5 6"  ->  [[1,2],[3,4],[5,6]]
//   힌트: split("\n") -> slice(1) -> map(줄 => 줄 나눠서 숫자배열)
function d6(raw) {
  return raw
    .split("\n")
    .slice(1)
    .map((slice) => slice.split(" ").map(Number));
}

// 드릴 7) 첫 줄 "N M"을 구조분해로 받아 객체로. raw="7 6"  ->  {n:7, m:6}
function d7(raw) {
  const [n, m] = raw.split(" ").map(Number);
  return { n, m };
}

// 드릴 8) 숫자 배열을 공백 문자열로. arr=[1,2,3]  ->  "1 2 3"
function d8(arr) {
  return arr.join(" ");
}

// 드릴 9) 숫자 배열을 줄바꿈 문자열로. arr=[1,2,3]  ->  "1\n2\n3"
function d9(arr) {
  return arr.join("\n");
}

// 드릴 10) 종합: 첫 줄 N, 둘째 줄에 공백구분 정수 N개. 그 정수 배열 반환.
//   raw="3\n10 20 30"  ->  [10,20,30]
function d10(raw) {
  return raw.split("\n").slice(1)[0].split(" ").map(Number);
}

 

 

2번 세트

// 드릴 1) 한 줄에 정수 하나. raw="42"  ->  42
function d1(raw) {
  return Number(raw);
}

// 드릴 2) 공백으로 구분된 두 정수. raw="8 2"  ->  [8, 2]
function d2(raw) {
  return raw.split(" ").map(Number);
}

// 드릴 3) 공백으로 구분된 정수들. raw="9 8 7 6"  ->  [9,8,7,6]
function d3(raw) {
  return raw.split(" ").map(Number);
}

// 드릴 4) 여러 줄 정수. raw="5\n15\n25\n35"  ->  [5,15,25,35]
function d4(raw) {
  return raw.split("\n").map(Number);
}

// 드릴 5) 앞뒤 공백/개행 제거 후 숫자. raw="\n  100  \n"  ->  100
function d5(raw) {
  // return raw.split("\n").trim().map(Number);
  return Number(raw.trim());
}

// 드릴 6) 첫 줄은 개수 N, 다음 줄들은 "a b" 간선. 모르겠다.
//   raw="2\n10 20\n30 40"  ->  [[10,20],[30,40]]
function d6(raw) {
  return raw
    .split("\n")
    .slice(1)
    .map((item) => item.split(" ").map(Number));
}

// 드릴 7) 첫 줄 "N M"을 구조분해로 받아 객체로. raw="3 9"  ->  {n:3, m:9}
function d7(raw) {
  const [n, m] = raw.split(" ").map(Number);
  return { n, m };
}

// 드릴 8) 숫자 배열을 공백 문자열로. arr=[5,6,7]  ->  "5 6 7" 답 봤음
function d8(arr) {
  return String(arr.join(" "));
}

// 드릴 9) 숫자 배열을 줄바꿈 문자열로. arr=[4,5]  ->  "4\n5"
function d9(arr) {
  return String(arr.join("\n"));
}

// 드릴 10) 종합: 첫 줄 N, 둘째 줄에 공백구분 정수 N개. 그 정수 배열 반환.
//   raw="4\n2 4 6 8"  ->  [2,4,6,8]
function d10(raw) {
  // return raw.split("\n").slice(1).split(" ").map(Number); // "2 4 6 8"
  return raw.split("\n").slice(1)[0].split(" ").map(Number);
}

 

회고 (오늘의 발견, 잘한 점, 불확실한 점, 내일부터)

 

오늘의 발견: 

- 아직 엄청 어렵지는 않다. 큰 발견은 없음. 

 

잘한 점: 

- split, slice의 메서드 사용법이 쉬웠다. 까먹고 자주 못 쓰기만 했을뿐, 오늘 하루만에 감을 잡은 느낌이다. 

- 풀이 방식이나 어떻게 해야겠다 라는건 여전히 잘 떠오르는 느낌이다. 

 

불확실한 점: 

- 2번 세트의 5,6,10번을 틀렸다. 어떤 문제냐면, 3가지가 있었다. 

(1) 배열에 trim을 썼다. 

(2) split 결과는 배열이다. 

(3) map은 자기 인자로 함수를 갖고, .찍은 대상을 그 함수에 돌려준다. 3개 꼭 기억하기. 

 

내일부터: 

- 2일차를 풀자. 오늘은 꽤 순조로웠다.