본문 바로가기

카카오 20203

[2020 카카오 기출] 기둥과 보 설치 문제: https://programmers.co.kr/learn/courses/30/lessons/60061 sooooooyn님의 솔루션으로 해결하였습니다. (https://sooooooyn.tistory.com/32) 기둥과 보를 설치/삭제 시에 어떻게 따져주는 지에 따라 난이도가 달라지는 문제입니다. 서치했던 솔루션 중에 굉장히 심플한 솔루션이라고 생각합니다. 간단하게 두 가지로 모든 경우를 처리합니다. 1. stick[N][N], paper[N][N] 으로 기둥과 보를 표현 2. 삭제 입력이 들어오면 일단 삭제 시켜본 후에, 삭제 시킨 좌표와 연관이 있는 기둥이나 보가 설치 불가능하다고 판정이 나는 경우 롤백시킵니다. 코드: https://github.com/cottory/algorithm/blob.. 2020. 8. 11.
[2020 카카오 인턴십] 보석 쇼핑 문제: https://programmers.co.kr/learn/courses/30/lessons/67258 투 포인터로 해결할 수 있는 문제입니다. 핵심은 N제한이 10만이므로 선형 탐색 한 번으로 탐색을 끝내야 한다는 점입니다. 문제를 해결하는 아이디어는 다음과 같습니다. 1. left, right를 선언해 현재 내가 구매할 보석의 하한 위치, 상한 위치 저장 2. 매 루프를 돌면서 right++ 을 통해 새로운 보석을 탐색합니다. 3-1. gems[right]가 현재 내가 가지고 있지 않은 보석이라면 내가 가지고 있는 보석 리스트에 추가합니다. 3-2. gems[right]가 현재 내가 가지고 있는 보석이라면, 3-2-1. 내가 구매할 보석 리스트 중 gems[left] 보석이 2개 이상이면 lef.. 2020. 7. 25.
[2020 카카오 인턴십] 수식 최대화 문제: https://programmers.co.kr/learn/courses/30/lessons/67257 시뮬레이션 문제입니다. 1. 연산자들간의 우선순위 정하기: n! 2. 1번 우선순위에 따라 계산하기 수식을 컨트롤할 자료구조를 정하는 게 중요한 문제였네요. 저는 deque를 써서 해결했습니다. 맨 처음에는 (수식어 파싱문제 = 스택)이라 생각하고 스택만 쓰다가 망했습니다. 스택을 통해 expression을 파싱하면 수식 순서가 반대로 되는데, 이 때문에 앞에서부터 계산해야 할 것을 뒤에서부터 계산하게 됩니다. 이게 문제가 되는 이유는 뺄셈의 경우 숫자의 위치가 바뀌게 되면 다른 값이 나오기 때문입니다. e.g. (520 - 60000) - 100 = -59,580 (100 - 60000) - 5.. 2020. 7. 25.