프로그래머스 : 짝지어 제거하기

KHW·2021년 3월 25일
0

알고리즘

목록 보기
15/37

문제 : 짝지어 제거하기

100/100


기본적인 내용

붙어있는 알파벳 계속 제거 후 제거가 불가능하게 남는다면 0리턴 전부 제거되면 1리턴

초반에 시간을 낭비하고 많이쓰다가 생각해보니 결국 연결은 마지막 대상 기준 다음 대상과 같다면 삭제를 진행하며 push pop 관계를 이용하면 된다 생각


나의 코드

function solution(s)
{
    let a=[];
    for(let i=0;i<s.length;i++)
        {
            if(a[a.length-1] == s[i] ){
                a.pop();
            }
            else{
                a.push(s[i]);
            }
                
        }
    return a.length == 0 ? 1 : 0;
}

수정 하기

function solution(s)
{
    let result=[];
    const s_length = s.length;
    
    for(let i=0;i<s_length;i++)
        {
            if(result[result.length-1] === s[i] )
                result.pop();
            else
                result.push(s[i]);
        }
    return result.length === 0 ? 1 : 0;
}

result로 수정 및 s_length 설정 , if else문 괄호 삭제 ==대신 ===쓰기


for in / for of

1. String

let string = 'abc'
for(val of string)
  console.log(val)

for(val in string)
  console.log(string[val])

a
b
c
a
b
c


2. Array

let arr = ['a','b','c']
for(val of arr)
  console.log(val)

for(val in arr)
  console.log(arr[val])

a
b
c
a
b
c


3. Object

let obj = { 0 : 'a', 1:'b' ,2 :'c'}
for(val of obj)
  console.log(val)		//VM1301:2 Uncaught TypeError: obj is not iterable

for(val in obj)
  console.log(obj[val])		// a b c 각각 출력
  • 굳이 따지면 val이 아니라 idx라 해야 덜 헷갈릴듯 하다
  1. for in은 마치 배열안(in)에 있는 index 값을 나타내므로 [ ]안에 사용을 주로 한다.
    for of는 그냥 하나의 값을 가진 대상으로 보면 될듯하다.
  2. 객체에서 for of 는 오류가 난다. (객체는 iterable하지 않다 보는듯)

Object에 for of 가능하게 하기

let obj = { 0 : 'a', 1:'b' ,2 :'c'}
for(val of Object.keys(obj))
  console.log(obj[val])

for in과 같은 효과가 나긴하는데 굳이 이럴거면 걍 for in 쓰고말지

for of , for in 전부 val에 let val 해야한다.

  • for of 는 배열에서 for in 은 객체에서
profile
나의 하루를 가능한 기억하고 즐기고 후회하지말자

0개의 댓글