function makePermutations(str) {
let result = ''
for(let left = 0; left < str.length ; left = left + 1) {
for(let right = 0; right < str.length ; right = right + 1) {
result = result + `${str[left]}${str[right]},`
}
}
return result.slice(0,result.length -1)
}
//문자열 str을 입력받는다
//변수 result를 선언해주고 ''를 할당해준다.
//for문을 사용해준다. 변수 left를 선언해주고 0으로 할당해준다. left< str.length, left++
//for문을 또 만들어준다. 변수 right를 선언해주고 0으로 할당해준다. right < str.length, right++
//result에 `${str[left]}${str[right]},`를 추가해준다
//result에서 result.length -1까지 slice해주고 리턴한다.
마지막에 return 뒤에 아무것도 안적었는데 그랬더니 끝까지 ,가 딸려나와서 test에서 틀렸다
result뒤에 무엇을 붙일까 하다가 slice를 붙여서 통과했다
만약 slice 메소드의 존재를 몰랐다면 구글링을 어떻게 해야 좋을까?싶었다
how to cut end of string in javascript 치니까 나왔다! 😃
function hasRepeatedCharacter(str) {
for(let i = 0 ; i < str.length -1 ; i = i + 1) { //비교를 하는거니까 마지막 끝까지 돌지않는다
for(let j = i + 1 ; j < str.length ; j = j + 1) {
if(str[i] === str [j]) {
return true
}
}
}
return false
}
두번째for문에서 조건을 쓸 때 아무 생각없이 let j = 0
을 써버렸다 ㅎ 생각을 해본 후에 코드를 적자. 일단쓰고 고치지말고!
나는 이중 for문안에 if문을 쓰고 else 는 false라고 적었다
그렇게 적으면 틀린 이유는 뭘까?
내가 처음 쓴 코드대로 쓰면 str[i]
와 str[j]
가 같을 때가 있지만 다를 때도 있는데, 그러면 true인 경우에 true가 나오지 않는다. 한 단어에서 겹치는 글자가 있을 때도 있지만 'aaaa' 이런 단어를 입력하지 않는 이상 모든 letter가 같을 수는 없기 때문이다
나중에 고칠 생각하지말고 처음부터 생각을하면서 천천히 차분하게 문제를 풀자
function makeMarginalString(str) {
let result =''
for(let i = 0; i < str.length ; i = i+ 1) {
for(let j = 0 ; j <= i; j = j + 1) {
console.log('i=',i,'j=',j)
result = result + str[j] //str[j]만 더하는 이유는?
}
}
return result
}
undefined
makeMarginalString('cat')
//i= 0 j= 0
//i= 1 j= 0
//i= 1 j= 1
//i= 2 j= 0
//i= 2 j= 1
//i= 2 j= 2
"ccacat"
j<= i
부분을 틀렸다.result = result + str[j]
인 이유는?i가 0번에 멈춰있을 때 j도 0에 멈춰서'c'만 나와야하고
i가 1일 때 j도 0이어서 'c'가 나오고 j가 1이어서 'a'가 나온다.
두글자가 합쳐져서 'ca'가 나오는 것이다
i가 2일때 j가 0이어서 'c'가 나오고 i가 2일때 j가 1이어서 'a'가 나오고 i가 2일때 j가 2여서 't'가 나오는 것이다 이렇게 하나하나 쳐보면 왜 틀렸는지 알 수있다.