ㅋㅋ. 내일 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 |