오늘은 안드로이드 스튜디오를 사용하면서 자신이 작성한 코드임을 명시할 수 있는 팁을 알려드리고자 합니다. :)
Continue reading알고리즘을 다시 풀려고 하는데, 기억이 하나도 나지 않아서 차근 차근 자바 문법부터 보고 있습니다…ㅎㅎ 하지만, 뭔가 알고리즘을 빨리 시작해서 공부해야 한다는 부담감이 조금씩 있죠… 하지만, 지금의 상황에서는 여러 가지를 하면서 진도를 많이 나가지 못하는 것보다는 범위를 좁혀서 빠르게 공부하는 게 나을 것 같다는 생각을 했습니다…!
그래서 이번 알고리즘 문제까지 풀고 당분간 우선 순위를 잡아 놓은 것들을 해결하고 나서야 다시 알고리즘을 꾸준하게 풀 수 있을 것 같습니다…ㅜㅜ 조급해 할 필요는 없고 시작하기 위한 기초를 잘 다지기 위한 과정이니까 조급해 하지 맙시다 ^^
문제
괄호 문자열이 주어졌을 때, 올바른 괄호 문자열인지 아닌지를 판단하는 문제입니다.
괄호 문자열 : ( 와 )로만 이루어진 문자열
올바른 괄호 문자열 : 괄호의 쌍이 올바른 문제
문제 : https://www.acmicpc.net/problem/9012
풀이
- 여는 괄호 : (
- 닫는 괄호 : )
닫는 괄호의 입장에서 닫는 괄호와 짝이 맞는 여는 괄호는 어디에 있을까요?
- 왼쪽에 있어야 합니다.
- 아직 짝이 맞지 않아야 합니다.
- 1과 2와 해당하는 문자 중에서 가장 오른쪽에 있는 괄호가 어떤 닫는 괄호가 있었을 때 그 닫는 괄호와 짝이 맞는 여는 괄호를 의미하게 됩니다.
이 성질을 이용해서 Stack을 이욜해서 풀 수 있다.
1 -> 어떤 순서로 문자열을 검사할 것인지를 판단할 수 있습니다.
2 -> 2번에 해당하는 여는 괄호를 차례대로 스택에 넣습니다.
그렇다면 스택에 있는 괄호는 아직 짝이 맞지 않는 괄호이기 때문에 가장 오른쪽에 있는 괄호는 Stack의 top을 의미하게 됩니다. 따라서 stack을 이용하면 시간 복잡도는 O(1)로 줄일 수 있게 됩니다.
- Stack을 이용해서 올바른 괄호 문자열인지 아닌지를 알 수 있습니다.
- ( 가 나오면 스택에 (를 넣고 )가 나오면 스택에서 하나를 빼서 (인지 확인합니다.
- 또는 하나를 뺄 수 있는지를 확인합니다.
경우는 세 가지로 나눠 볼 수 있습니다.
- 닫는 괄호가 나왔는데 스택이 비어있는 경우 -> 올바른 문자열이라고 할 수 없습니다. 왜냐하면 닫는 괄호에 해당하는 여는 괄호가 없기 때문입니다.
- 모든 과정이 끝났고, 스택이 비어있는 경우 -> 올바른 문자열이라고 할 수 있습니다.
- 모든 과정이 끝났는데, 스택이 비어있지 않은 경우 -> 여는 괄호에 대한 닫는 괄호가 없기 때문입니다.
하지만, 다시 생각해보면 스택에는 어차피 여는 괄호를 넣습니다. 따라서 스택에 무엇이 들어있는지 보다는 몇개가 들어있는지가 중요한 문제입니다. 즉, count 변수를 선언해서 체크함으로써 해결 가능합니다.
코드
1 | import java.io.BufferedReader; |
뒤늦은 후기이지만, 제가 참여한 해커톤에 대한 간단한 리뷰를 해보겠습니다. ^0^
제가 활동하고 있는 SOPT라는 동아리에서 AppJam이라는 2주 간의 해커톤은 해 본 경험이 있지만, 이렇게 짧은 1박 2일간의 해커톤은 처음이었습니다. 이번 글은 제가 첫 해커톤에 참가해서 느낀 경험을 말해보는 시간입니다. :D
Continue reading한 동안 졸업 작품과 다른 것들로 인해서 바빠서 알고리즘을 풀지 못했다… 이런 나를 반성하면서 다시 꾸준하게 알고리즘을 풀면서 공부해야겠다!!
Continue reading스플래쉬 + 폰트 + 아이콘
스플래쉬(Splash)
- 백그라운드에 있지 않은 어플리케이션을 실행했을 때 맨 처음 나오는 화면
(보통은 로그인 하기 전에 나오는 화면)을 말한다. - 사용자로 하여금 앱이 실행되고 있음을 보여준다.
- 로그인 전에 서버와 통신해야 할 부분이나 기타 처리할 데이터가 있으면 이 화면에서 처리한다.