본문 바로가기

알고리즘

자바스크립트 문자열 문제풀이

728x90

[문제1]

https://www.acmicpc.net/problem/11720

 

11720번: 숫자의 합

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

www.acmicpc.net

[나의 코드]

let fs = require("fs");
let input = fs.readFileSync("dev/stdin").toString().split("\n");

let n = Number(input[0])
let array=input[1].split("").map(Number)
console.log(array.reduce((a,b)=>a+b))

1분컷

 

[문제2]

https://www.acmicpc.net/problem/2675

 

2675번: 문자열 반복

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다

www.acmicpc.net

[나의 코드]

let fs = require("fs");
let input = fs.readFileSync("dev/stdin").toString().split("\n");

let n = Number(input[0])
let answer="";
for(i=1;i<=n;i++){
  let repeatNum =input[i].split(" ")[0]
  let array =input[i].split(" ")[1]
  for(j=0;j<array.length;j++){
    answer=answer+array[j].repeat(repeatNum)
  }
  answer=answer+"\n"
 
}
 console.log(answer)

 

[문제3]

https://www.acmicpc.net/problem/2908

 

2908번: 상수

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두

www.acmicpc.net

[나의코드]

let fs = require("fs");
let input = fs.readFileSync("input.txt").toString().split("\n");

let [a,b]=input[0].split(" ")
let reverseA=Number(a.split("").reverse().join(""))
let reverseB=Number(b.split("").reverse().join(""))
console.log(Math.max(reverseA,reverseB))

 

[문제4]

https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

[나의코드]

let fs = require("fs");
let input = fs.readFileSync("dev/stdin").toString().split("\n");

let n = Number(input[0])
let answer=n;
for(i=1;i<=n;i++){
  let tempArray=[];
  for(j=0;j<input[i].length;j++){
   tempArray.push(input[i][j-1])
    if(tempArray.includes(input[i][j]) && input[i][j-1]!==input[i][j]){
      answer=answer-1
      break
    }
  }
}
console.log(answer)

앞에는 다 2분컷이었는데 이거 하나에 30분 넘게 걸린듯...return 과 break를 혼동하여 왜 console.log가 안찍히나<= 이거 때문에 엄청 오래걸렸음

 

[문제5]

https://www.acmicpc.net/problem/1152

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열

www.acmicpc.net

 

[나의코드]

let fs = require("fs");
let input = fs.readFileSync("dev/stdin").toString().split("\n");

let string = input[0]
let array=string.split(" ")
let answer=array.length
for(i=0;i<array.length;i++){
  if(!array[i]){
    answer=answer-1
  }
}

console.log(answer)

처음에 메모리 초과 떠서 살짝 리팩토링해서 통과

[메모리 초과 뜬 코드]

let fs = require("fs");
let input = fs.readFileSync("dev/stdin").toString().split("\n");

let string = input[0]
let answer=string.split(" ").length
for(i=0;i<string.split(" ").length;i++){
  if(string.split(" ")[i]===""){
    answer=answer-1
  }
}

console.log(answer)

 

 

728x90