Code Kata#9

Hyunjun Kim
akiakma
Published in
3 min readMay 11, 2020
#문제s는 여러 괄호들로 이루어진 String 인자입니다.
s가 유효한 표현인지 아닌지 true/false로 반환해주세요.
종류는 '(', ')', '[', ']', '{', '}' 으로 총 6개 있습니다.
아래의 경우 유효합니다.
* 한 번 괄호를 시작했으면, 같은 괄호로 끝내야 한다.
* 괄호 순서가 맞아야한다.
예를들면,
s = "()"
return true
s = "()[]{}"
return true
s= "(]"
return false
s= "([)]"
return false
s= "{[]}"
return true

문제의 내용을 해석해본다면, 괄호의 쌍을 찾는것입니다.
괄호의 length는 당연히 짝수여야할테고, 기본적으로 여는 괄호가 있다면 닫는 괄호도 있어야 할것입니다. 또한 열고 닫을때 괄호의 순서도 맞아야 할테고요. 다음과 같은 방식으로 문제를 풀었습니다.

  1. 함수의 매개변수s에 “{[]()}”라는 인자를 넣어줬습니다.
  2. isValid 라는 함수를 만들어 줬구요.
  3. arr이라는 변수를 선언해주고 s.slice() 를 초기화해줍니다. s.slice()란 global로 선언된 s를(괄호들을 포함하고있는 String array를) arr이라는 변수에 새 배열로 넣어준다는것입니다.(내용은 같지만 새로운 string array 겠죠?)
  4. 첫번째 for문 입니다. i는 0부터 시작해서 s.length/2 까지(6/2=3)니까 0,1,2로 i가 1씩 증가할거에요.
  5. 두번째 for 문입니다. j는 0부터 시작해서 s.length-1 까지(6–1)니까 0,1,2,3,4까지 j가 1씩 증가할거에요.
  6. match라는 변수를 선언해주고 arr[j] + arr[j+1]을 더해줍니다. 위의 예시를 보면 arr[0]과 arr[0+1]이니까 {와[를 더해준다는 거겠죠.
  7. if문이 시작됩니다.match가 () or {} or []라면, arr을 “” 빈 String으로 바꿔줘라 라는 뜻입니다!
  8. 그래서 결국 “” 빈 String이 되면 같은 짝들을 다 찾았다는 소리니까 true반환 그외에는 false!
****************************************************.replace()는 특정 문자열을 찾아 다른 문자열로 바꾸는 메서드입니다.
string.replace( 'string1', 'string2' )
string에서 string1을 찾아 string2로 바꿉니다.
****************************************************.slice()는 배열의 일부분을 선택하여 새로운 배열을 만듭니다.
array.slice( start, end )
****************************************************
참고:https://www.codingfactory.net/

--

--