생활/개인 정리

2015 쿠팡 Catch Test 시험 마지막 solvingTest 1번 문제.

브리2 2015. 10. 10. 22:18

ㅋㅋ. 내일 NHN pre-test인데... 쿠팡 1번이 갑자기 기억났다.... ㅋㅋㅋㅋㅋ

어려운건 아니니깐 금방 쓰고 마무리공부하고 자야지.


확실히 기억은 나지 않는다.. 이것도 마찬가지로 구조체 쓰고 그에따른 함수작성인데.

구조체는 기억안나고. 대충 기억나는건.


문자열을 입력 받는다. <{[(, }])> 가 들어간 문자열을 입력받는데 이거를 입력받고 정의할 어떠한 구조체를 만드는거였다;;; 기억 잘 안남;;;..


함수는 뭐 없다. 저거 괄호 안닫혀있으면 오류 나도록 확인해주는 알고리즘.....

시험시간도 30분인가. 40분인가....

근데.. 난 이것도 제대로 못한거 같다.... 끝나고 망했다고 생각했는데 왜그랬는지 기억 안남...


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
static boolean isCorrect(String input){
    char[] check = input.toCharArray();
    int dae = 0, jung = 0, so = 0, gguck = 0;
    
    for(int i=0; i<input.length(); i++){
        if(check[i] == '<')
            gguck++;
        else if(check[i] == '[')
            dae++;
        else if(check[i] == '{')
            jung++;
        else if(check[i] == '(')
            so++;
        else if(check[i] == '>')
            gguck--;
        else if(check[i] == ']')
            dae--;
        else if(check[i] == '}')
            jung--;
        else if(check[i] == ')')
            so--;
    }
    
    if(dae == 0 && jung == 0 && so == 0 && gguck == 0)
        return true;
    return false;
}
cs

이건 거의다들 했겠지... 하. 됐어. 잡생각 접고 내일시험시험!!....

------------------------------------------------------------------------------------

(15.10.19) 치명적인 오류를 발견함!. "<{[>()}]" 이런식으로 순서상 안어울려도 먹힘 이건..ㅋㅋㅋ왠지는 다들 아실 듯. 이것도 수정하겠슴!.

(15.10.21) 추가.

무식하지만 기본적인 내용으로 이렇게할 수 있음. 스택을 사용해야함. 난 자바니깐. 당연히 요로케.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static boolean isCorrect(String input){
    char[] check = input.toCharArray();
    //스택에 쌓아두기.
    Stack<Character> st = new Stack<Character>();
    for (int i = 0; i < check.length; i++) {
        //문여는기호일때.
        if(check[i] == '<' || check[i] == '{' || check[i] == '[' || check[i] == '(')
            st.push(check[i]);
        //문닫는 기호일때.
        else if((check[i] == '>' && st.peek() =='<'||
                (check[i] == '}' && st.peek() =='{'||
                (check[i] == ')' && st.peek() =='('||
                (check[i] == ']' && st.peek() =='['))
                st.pop();
    }
    //스택이 빈거면 전부다 괄호 채워진거니깐.
    if(st.isEmpty())
        return true;
    return false;
}
cs

하지만 nhn pre-test를 보면서 새로운 걸 알 수 있었슴. 

숫자로도 스택이 구현 가능하단 것을. 그냥 10진수랑 같다고 생각하면 됨.

ex)  suedo code.

stack=0;

int dae=1, jung = 2, so = 3, gguck = 4;

while(모든 문자 확인).

if(여는 기호일때)

stack = stack*10+(dae || jung || so || gguck);

else (닫는기호일때)

if(stack%10 == (닫는 기호 랑 맞을 때ex)dae || jung || so || gguck))

stack /= 10;

else return false;

end while

if(stack == 0) return true;

else    return false;


뭐 이런식이었음..

확실히 메모리 더 줄이고 속도도 빨라질 것으로 생각됨. stack메모리 구현이 아니라 단순 정수 계산으로 이루어진거라서....

'생활 > 개인 정리' 카테고리의 다른 글

이스트소프트 필기 후기.  (0) 2015.10.31
SAQ!  (0) 2015.10.19
삼성서류.  (0) 2015.10.08
LG낙방, KDB낙방, 한전, 파수 지원.  (0) 2015.10.07
인턴마지막날.  (0) 2015.09.30