#검사
demo.each do |ss|
if opener.include? ss
stack << ss #괄호가 여는 것이면 스택에 쌓는다
elsif stack == [] #닫는 것인데 스택이 비어있으면 false
condition1 = false
elsif set[stack[-1]] == ss #닫는 것이 가장 마지막 스택의 여는 값과 매치되면 스택에서 괄호를 지운다
stack = stack - [stack[-1]]
else #위의 case에 해당하지 않으면 false
condition1 = false
end
end
unless stack == [] #stack 에 남은 값이 없어야함
condition1 = false
end
if condition1 == true #컨디션 검사 및 출력
puts "YES"
else
puts "NO"
end
dwno108
[[problem:BRACKETS2]] 를 루비로 풀어보고 있는데, 어느 부분에서 오답처리가 되는지 도무지 모르겠네요 ㅠㅠ 조언 부탁드립니다
코드와 알고리즘은 아래 있습니다
~~~RUBY
#입력받기
n = gets.chomp.to_i
newarr = Array.new
1.upto(n) do
newarr << gets.chomp.to_s
end
#고정값 선언
opener = ['(', '[', '{']
set = {'(' => ')','['=> ']', '{'=>'}'}
#검사
newarr.each do |array|
#내부 변수 초기화
condition1 = true
stack = Array.new
demo = Array.new
demo = array.split(//)
end
11년 전