문제에서 요구하는 대로 코드를 짜면 되는 구현문제이다. 이 문제는 요구사항도 일곱단계로 정리해서 주었고, 효율성을 크게 요구하는 문제도 아니기 때문에 문제가 원하는대로 구현하면 쉽게 풀수 있는 문제이다. 약간 까다로운 조건이라하면, 연속으로 마침표를 사용할 경우에는 마침표가 제거된다는 점이 있었는데 백준 문자열폭발 문제에 비하면 까다로운 조건도 아니였다. 문자열 폭발처럼 스택으로 해결하지 않고 플래그로 해결했어도 됐지만, 나는 스택을 이용하여 풀었다. 문제조건은 아래와같다. stack 자료구조를 이용하여 쉽게 풀 수 있었다.
구현
나에게는 너무 어려운 구현 그 자체인 문제였다. 구현 문제를 풀 때, 항상 고민인 점이 '시간, 메모리 통과할까?'이다. 내가 아직 경험이 부족하여 시간에 대한 정확한 확신이 없어서 이런 일이 있는 것 같다. 이 문제를 풀 때도 손 코딩 단계에서 이렇게 해야 하나? 아니면 이렇게? 이 고민으로 한 시간은 족히 소모한 것 같다. 결국 손 코딩을 완전히 끝내지 말고 일단 그냥 풀어보자는 마음으로 키보드를 쳐봤는데 막상 치기 시작하니 금방 푼 느낌도 드는 것 같다. 문제를 간략히 설명하자면, 말그대로 재원이가 만든 게임을 진행하고, 게임 진행조건을 도달했을 때 소요된 턴을 출력하는 문제이다. 결국은, 문제에서 설명하는 게임을 구현해내는 문제이다. 게임 규칙은 문제에서 읽어보는 것이 가장 좋을 것 같고, 결국 ..
달팽이 문제는 많이 기억에 남는 문제이다. 왜냐하면 싸피를 시작하며 처음 알고리즘을 알게 되었고, 알고리즘 스터디에서 문제를 풀 때, 나에게 절망을 준 문제 중 하나였기 때문이다. 그때 다른 분들이 조건을 찾아서 풀거나 delta기법을 이용하여 문제를 풀 때, 어떻게 그렇게 구현하지 생각하며 부러워했던 기억이 난다. 그래도 이제는 나도 그때 달팽이 문제보다 조금 어려워진 문제를 구현으로 바로 풀어내는 것을 보니 성장했다는 것이 체감되는 아주 기분 좋은 문제였다. 문제는 아마 알고리즘 문제를 풀어 보는 모든 사람들이 익숙한 문제일 것이다. 이문제가 다른점은 달팽이가 삼각형 모양으로 움직인다는 것이다. 문제를 보면 1번위치에서 출발해서 왼쪽 아래 꼭짓점, 오른쪽 아래 꼭짓점, 다시 위쪽 꼭짓점 방향으로 달팽..
사실 이 문제는 자신 있게 풀었다가 완전히 오답이 나서 내 접근 자체가 틀렸단 걸 느껴 질문하기를 통해 힌트를 보고 풀었다. 질문하기를 보니 나처럼 접근했다가 답을 틀린 사람이 많았던 것 같다. 우선 문제를 간단히 설명하자면 다단계 조직원들의 수입을 리스트로 반환하는 문제이다. 이런 식으로 다단계 조직원들의 구조가 이루어져 있을 때, 자신이 개당 100원짜리의 칫솔을 판매하거나 자신의 자식이(추천받은 사람) 수익을 얻어 자신이 수익을 받는다면 90%를 내가 가지고 10%를 자신의 부모(추천인)에게 보내주어야 한다. 여기서 나는 두가지 실수를 하였다. 1. 모든 자식노드의 수입이 정해진 후 자신의 수입을 정한다(트리의 후위 순회) -> 틀린 이유 : 수입을 받을 때마다 부모에게 보내주어야 함(10%를 보내..
이 문제는 문제 설명을 길지만 내용은 간단한 문제였다. 요약하자면 주차장에 입출고한 차량의 시간 / 차번호 / 입출고 여부 가 주어질 때, 각 차량 당 하루 주차요금을 계산하는 문제이다. 문제를 보면서 고민했던점은 1. 시간 계산을 어떤 식으로 할 것인가 2. 데이터를 어떤 컨테이너에 넣어서 요금계산을 할 것인가였다. 우선 나는 문제의 세부조건에서 '입고한 후, 출고 기록이 없다면 23:59에 출고된 것으로 한다' 부분과 TC에서 '입고-출고를 했던 차량이 다시 입고하는 경우'를 보고 아이디어를 떠올렸다. 1. 시간 계산 아이디어 우선 모든 차들은 max_time(23:59)을 쓴다고 가정하고, 입고되면 입고 시간만큼 빼고 출고되면 출고시간부터 23:59시까지 시간을 뺐다. 이렇게 하면 별다른 구현 없이..
이 문제는 문제 자체가 어렵다기보다는 손 코딩을 통해 어떻게 풀어나갈지 정하고 풀기 시작하지 않는다면, 문제를 풀면서 코드가 복잡해지는 문제 같았다. 나도 손 코딩부터 하지 않고 하여 코드가 뒤죽박죽이 됐었다. 이 문제는 설명이 매우 길지만 요약하자면 주어진 두개의 문자열을 각각 문자로만 이루어진 두 개의 단어로 쪼개어 다중집합으로 저장한 후, 자카드 유사도를 구하는 문제이다. 문제를 읽으면서 다중집합과 자카드유사도를 보며 처음 보는 개념에 당황했지만, 개념을 이해하기보다는 문제가 시키는 대로 풀려고 노력했다. 다중집합은 중복을 허용하는 집합이었고 그렇기 때문에 교집합과 합집합을 구하는 방식이 일반 집합과 달랐다. 나는 문제를 풀기위해 총 세 가지 부분으로 나누어 풀었다. Q1. 문자열을 두글자씩 모두 ..