문제 조건 입출력 예제 솔루션 스택 자료구조를 사용하였다. why ?) FILO 형식으로 뒤에서부터 진행하고, 신호가 수신된 탑은 고려할 필요가 없어 스택을 사용하면 다루기가 편할거라 생각. 몇 번째 탑이고, 높이 크기가 얼마나 되는지 관리하기 위해 Top 클래스를 정의한다. idx는 현재 비교하려는 탑이 몇 번째 인덱스인지 현재 위치를 의미하는 변수이다. 스택 두개를 만들어 stack은 입력으로 주어진 탑들을 순서대로 집어넣고 다시 꺼내기 위한 변수이며, wait은 이전 탑보다 높이가 큰 탑들을 담아놓기 위한 스택 (자기보다 높이가 큰 탑이 나올때까지 대기) 이다. stack에 현재 탑 정보를 Top 객체로 만들어 Push() 한다. 그리고 처음 answer에 모두 0으로 초기화 (수신이 되지 않는다면..
문제 조건 입출력 형식 입출력 예제 솔루션 링크드 리스트 자료구조를 사용하였다. Why ?) 큐를 사용할까 고민했지만 FIFO 형태이므로, 큐 중간 위치에 있는 데이터를 제거하지 못하기 때문에 큐는 적합하지 않다고 판단하여 링크드 리스트를 채택. 먼저 특이한 상황을 처리한다. 캐시 사이즈가 0 이라면, 캐시에 쌓이는 것이 하나도 없으므로 모두 캐시 미스가 발생한다. 따라서 아래의 반복문을 갈 필요도 없이 총 cities 갯수 x 5를 반환해주면 된다. 캐시 사이즈가 0이 아니라면, cities 갯수만큼 반복문을 수행한다. 대소문자 구분이 없다고 했으므로, cities[i]를 소문자로 바꾼다. (대문자로 바꿔도 무방) 먼저 시간을 5만큼 더해준다. 캐시에 현재 비교하려는 cities[i]가 존재한다면, 캐..
문제 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 그렇지 않으면 J를 인쇄합니다. 조건 입출력 예제 솔루션 먼저 문서의 인덱스와 중요도를 가지고 있는 문서 객체를 만드는 클래스를 구현한다. 클래스 생성 이유 ?) 문서의 인덱스와 중요도를 함께 다루기 위해서 (배열 2개를 사용할 경우 굉장히 번거로울 거라 생각). idx는 중요도가 높은 것부터 차례대로 접근하기 위한 인덱스이며, 순차적으로 문서를 뽑아내는 것이므로 큐 자료구조를 사용한다. 중요도가 담겨 있는 priorities 배열을 순서대로 모두 큐에 삽입해준다 (Offer()). priorities 배열을 오름차순 ..
문제 조건 입출력 예제 솔루션 먼저 정답인 answer = 1로 초기화하고 (성공할 수 있다고 가정), 스택 자료구조를 사용한다. Why 스택 ?) 동일한 문자열이 나오면 스택의 Pop()을 이용하여 제거하고, 다음 문자부터 다시 Push() 하면 될 것이라 판단. 문자열 s의 길이 만큼 반복한다. 스택이 비어 있다면, 문자를 스택에 Push() 한다. 스택이 비어 있지 않다면, 동일한 문자인지 비교한다. 스택의 꼭대기 (Top) 문자와 문자열 s의 i번째 문자가 동일하다면, 스택을 Pop() 하여 제거한다. 동일하지 않다면, 스택에 i번째 문자를 Push() 한다. 반복문이 종료된 이후에도 스택이 비어 있지 않다면, 성공적으로 수행하지 못하는 것이므로 answer = 0 으로 바꿔준다. (실패) Cod..