2022-09-29 항해99

김재우·2022년 9월 29일
0

TIL

목록 보기
3/17

2주차를 마치면서 내가 느낀 감정..

이번주차는 2주차인 알고리즘 주차가 끝나는 날이다.
처음 접해보는 알고리즘을 풀면서 자신감도 좀 생기고 진짜 열심히 문제를 풀어왔었는데...
시험 문제에서 풀던 문제 유형에서 새롭게 변형을 해서 그런지..
처음에 오 이거 내가 아는 문제인데 하면서 좋아라 했던게 오히려 나한테 독이 된거같다.

해당 문제는 "hang hae ninety nine" 이라는 입력값을 받아서
출력밧인 "HaNg HaE nInEtY nInE" 으로 값이 출력되어야 한다.

function solution2(s) {
    let vaca = s.split(" ").join("")
    let newvaca = vaca.split("")
    console.log(newvaca)
    let box2 = "";
    for (let i = 0; i < newvaca.length; i++ ) {
        [i] % 2  ? box2 += newvaca[i].toLowerCase(): box2 += vaca[i].toUpperCase()  
        }
        
    
    console.log(box2)
    return box2;
    
}
let s = "hang hae ninety nine"
console.log(solution2(s))

내가 쓴 코드다.
나는 먼저 split으로 문자열을 배열 형식으로 값을 받아오게 만든 다음에
for문을 원래는 이중 for문을 돌려서

for (let i= 0; i < newvaca.length; i++) {
	for(let i = j; j < newvaca[i].length; j++) {
    newvaca[i][j] % 2 ? box2 += newvaca[i][j].toLowerCase() : 
    box2 += newvaca[i][j].toUpperCase() 식으로 넣어달라는 식을 썻는데
    공백이 있어서 그런지 해당 값이 출력이 되지않아..
    }
}

테스트를 보면서 내가 겪은 문제 그리고 느낀 감정들..

처음 공백을 제거 하는거 부터 진행을 하게 되었다. 그래서 첫부분에 join을 붙여서 공백을 사라지게 만든다음에 접근을 다시 했는데 문제가 생겼다. 이중 for문으로 돌렸을땐
i의 for문이 돌고 난 후에 공백을 넣을수 있어서 띄어쓰기가 가능 했지만 해당 식으로 접근을 하니깐 공백을 넣을수가 없었다. 나는 난제에 빠졌다..
하.. 이것만 세시간을 구글링 미친듯이 해보고 고민을 했는데 결국에는 찾지 못했다 방법을 ㅠㅠ..

애석하게도 해당 문자열은 띄어쓰기가 되지 않고.. 구글링을 했던 시간이 길어지면서 다시 식을 작성하기에도 시간이 부족해서 어떻게 이 방법안에서만 해당 방법을 찾아보다가 결국엔 실패했다..

오늘 너무 울적하다 나같은 실력을 가진 사람이 개발자를 정말 할수있는걸까 라는 의구심도 생겼다.

항상 남과 다름을 인정했던 나인데 오늘 만큼은 내 역량에 대해서 의심을 품었다..
그치만 뭐 달라지는건 없고 내가 개발자를 하기로 마음 먹은 시점부터 이러한 결과들은 이미 정해진게 아닐까 ?? 라는 생각을 하면서 나 자신을 조금이라도 위로했다. 너무 슬프다 ㅠㅠ

팀원분들은 boolean 을 이용해서 문제를 풀이하신걸 보면서 다시 공부를 해 봤다.

function solution(s){

        const arr = str.split('')
        let upper = true
        
        for (i = 0; i < arr.length; i++) {
          if (arr[i] === ' ')
            continue
          if (upper){
            arr[i] = arr[i].toUpperCase()
          } else {
            arr[i] = arr[i].toLowerCase()
          }
           upper = !upper
        }
        return arr.join('')
        }

let str="hang hae ninety nine";
console.log(solution(str))

str 을 split으로 짜르고
여기서 다른점이 let upper 라는 변수에다가 = true 라는 boolean 값을 줬는데 그 점이 되게 신기했다.
for 문을 돌리고 만약에 arr[i] 의 값이 공백이면 cotinue 라고 쓰여져 있는데 계속 실행을 하라는 의미인건가? 궁금해서 찾아봤다.

continue 문은 현재 또는 레이블이 지정된 루프의 현재 반복에서 명령문의 실행을 종료하고 반복문의 처음으로 돌아가여 루프문의 다음 코드를 실행합니다.

알고리즘 테스트를 마치면서!
앞으로의 다짐!

아 처음으로 돌아가서 다시 반복을 하는거구나 그럼 또 처음부터 0이니깐 해당 인덱스인 공백이 없다는 기준에선 저게 인덱스 번호가 4인데 이것을 continue 문을 이용해서 아예 i 자체를 초기화해서 공백을 무시하고도 짝수번째 인덱스일때 대문자로 바꿀수가 있는구나. 진짜 신기하다 내가 만약에 좀더 공부를 해서 continue 라는걸 알았으면 나도 저거를 활용했을텐데 너무 아쉽다.
진짜 js에는 다양한 함수들과 문법들과 method 와 for ,while continue ,if else if, else 너무 다양한것들이 존재하는데 이 방대한 양을 고작 2주 공부한 내가 다 아는것은 반칙이다.
앞으로 더 열심히 지식을 쌓아야겠다 적재적소의 순간에 저런것을 활용하면 코드를 더 쉽게 짤수있을거 같다. 여러가지로 느끼는게 많은 2주차 밤이였다. 내일부터는 다시 주특기 공부를 열심히 해야하기 때문에 평소보다 좀 더 일찍 게더를 나왔다..😂

profile
프론트엔드 꾸준개발자입니다.

0개의 댓글