본문 바로가기

Algorithm76

[알고리즘] 잃어버린 괄호 (백준 1541번) 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net +, - 연산자로만 이루어진 수식에서 적절하게 괄호를 쳐서 최소값을 찾아내야하는 문제다. 만약 1+2+3-4+5+6-7 가 있다면 괄호 없이 계산할 시 합은 6이다. 하지만 만약 1+2+3-(4+5+6)-7 로 괄호를 쳐서 계산하게 되면 -16이 답이된다. 즉 -부호가 붙은 뒤의 수들을 괄호로 묶으면 최소값이 된다. (이중괄호는 고려하지 않는다) "-" 연산자를 기준으로 String을 split한다. split된 token들을 반복문을 돌려서 token마다.. 2020. 8. 24.
[알고리즘] 체스판 하얀 칸 (백준 1100번) 1100번: 하얀 칸 체스판은 8*8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램�� www.acmicpc.net 사실 이 문제는 굉장히 쉬운지라 어떻게 풀어도 상관은 없지만 다른 사람들 코드를 보니 의외로 이 사실을 모르는 것 같아서 한 번 올려본다. Solution 만약 이런 체스판이 있다고 쳤을 때 (가로 index + 세로 index), 즉 i + j 가 흰 칸은 짝수이고 검은 칸은 홀 수 이다. 그래서 굳이 i 가 짝수일 때, 홀수 일 때 경우, j가 짝수 혹은 홀수 일 때 경우를 분기할 필요 없이 (i+j)가 짝수, 홀수인 경우로만 분기하면 된다. impor.. 2020. 8. 24.
[알고리즘] 크로아티아 알파벳 (백준 2941번) 2941번: 크로아티아 알파벳 문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= www.acmicpc.net 일종의 문자 패턴 매칭? 부류의 문제라고도 볼 수 있을 듯 한데 나같은 경우엔 stack을 이용해서 풀었으나 다른 사람들의 코드를 보니 String의 replace 메서드를 이용해서 푼 사람들이 많았다. (생각도 못했음...) Solution 1) Stack 사용 list라는 배열에 크로아티아 알파벳을 전부 집어넣는다. isCroaticAlphabet() 메서드를 만들어서 word가 list 안에 있으면 크로아티아 알파벳으로 판.. 2020. 8. 24.
[알고리즘] 괄호 체크 (백준 9012번) 9012번: 괄호 문제 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)�� www.acmicpc.net 문자열 처리 중 괄호 쌍 체크의 가장 핵심은 stack의 사용이다. string 길이만큼 반복문을 돌며 각 자리에 있는 character를 체크한다. 여는 괄호 ' ( ' 가 나오는 경우 stack에 push 한다. 닫힌 괄호 ' ) ' 가 나오는 경우 stack이 비어있으면 NO 반환 stack이 비어있지 않다면 stack에서 괄호 하나를 pop 한다. 반복문 종료 후 stack에 괄호가 남아있다면 NO 반환 그렇지 않다면 Y.. 2020. 8. 24.