[Silver II] 키로거 - 5397 문제 링크 성능 요약 메모리: 90776 KB, 시간: 468 ms 분류 자료 구조, 연결 리스트, 스택 제출 일자 2023년 12월 29일 22:52:23 문제 설명 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오. 강산이는 키보드로 입력한 키는 알파벳 대문자, 소문자, 숫자, 백스페..
[Silver III] 프린터 큐 - 1966 문제 링크 성능 요약 메모리: 69108 KB, 시간: 8 ms 분류 자료 구조, 구현, 큐, 시뮬레이션 제출 일자 2023년 12월 31일 23:18:47 문제 설명 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를 확인한다. 나머지 문서들 중 현재 문서보다 ..
[Silver II] 앵무새 - 14713 문제 링크 성능 요약 메모리: 72104 KB, 시간: 64 ms 분류 자료 구조, 구현, 큐, 문자열 제출 일자 2024년 1월 1일 11:10:47 문제 설명 자가용 비행기를 타고 세계 일주를 하던 pps789와 cseteram은 어느 날 엔진 고장으로 인해 이름 모를 섬에 불시착하게 된다. 그들은 이 섬을 탐험하는 도중 아주 신기한 사실을 알게 되었는데, 바로 이 섬에 사는 앵무새들은 놀라울 정도로 인간의 말을 흉내 내는 데 뛰어나다는 것이다. 그들은 서로 떨어져 섬을 탐험하기로 하였으며, 필요하다면 앵무새를 이용해 서로에게 연락하기로 약속하였다. 1개월 후, pps789는 섬의 비밀을 밝힐 결정적인 증거를 찾게 된다. 그는 이 세기의 대발견을 cseter..
[Silver IV] 큐 - 10845 문제 링크 성능 요약 메모리: 69376 KB, 시간: 28 ms 분류 자료 구조, 큐 제출 일자 2023년 12월 31일 16:50:53 문제 설명 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐..
알고리즘 문제를 풀 때 Character나 String을 Int로 변경해야 하는 경우가 있습니다. 기존의 방식과 새롭게 알게 된 wholeNumberValue에 대해 알아보겠습니다. 기존 기본적으로는 Character를 String으로 변환해준 뒤, 이를 Int로 변환해주는 방법을 사용하였습니다. (Character를 바로 Int로 변환해주면 에러가 발생하기 때문에, String으로 변환을 먼저 해주어야 합니다.) var num: Character = "7" if let number = Int(String(num)) { print(number) } // 7 Optional로 반환되기 때문에 옵셔널 바인딩이나 언래핑 등을 해주어야 합니다. wholeNumberValue 하지만 이에 대해 공부하던 도중, w..
알고리즘 문제를 풀다보면 배열에 있는 문자나 문자열을 차례대로 출력해야 하는 경우가 있습니다. 스위프트는 타입에 매우 민감하기 때문에 둘을 출력할 때에 다르게 출력해야 하는데, 각각의 상황에서 어떻게 출력해야 하는지와 이유가 무엇인지에 대해 작성하고자 합니다. 문자 (Character) 문자가 들어있는 배열탑을 출력할 때에 보통 다음과 같이 풉니다. var array = [Character]() array = ["a", "b", "c", "d"] for arr in array { print(arr, terminator: "") } // abcd 하지만 String을 이용하면 for문을 사용하지 않고도 바로 출력할 수 있습니다. var array = [Character]() array = ["a", "b"..
[Silver II] 창고 다각형 - 2304 문제 링크 성능 요약 메모리: 69108 KB, 시간: 12 ms 분류 브루트포스 알고리즘, 자료 구조, 스택 제출 일자 2023년 12월 27일 18:19:12 문제 설명 N 개의 막대 기둥이 일렬로 세워져 있다. 기둥들의 폭은 모두 1 m이며 높이는 다를 수 있다. 이 기둥들을 이용하여 양철로 된 창고를 제작하려고 한다. 창고에는 모든 기둥이 들어간다. 이 창고의 지붕을 다음과 같이 만든다. 지붕은 수평 부분과 수직 부분으로 구성되며, 모두 연결되어야 한다. 지붕의 수평 부분은 반드시 어떤 기둥의 윗면과 닿아야 한다. 지붕의 수직 부분은 반드시 어떤 기둥의 옆면과 닿아야 한다. 지붕의 가장자리는 땅에 닿아야 한다. 비가 올 때 물이 고이지 않도록 지붕의 ..
[Silver II] 화학식량 - 2257 문제 링크 성능 요약 메모리: 69104 KB, 시간: 8 ms 분류 자료 구조, 스택, 문자열 제출 일자 2023년 12월 25일 23:17:40 문제 설명 우리가 널리 사용하는 H2O(물), CH3COOH(아세트산)과 같은 화학식은 알파벳과 숫자, 그리고 괄호로 구성된다. 먼저 알파벳은 원자를 나타내는 것으로 H는 수소(Hydrogen), C는 탄소(Carbon), O는 산소(Oxygen) 원자를 뜻한다. 또한 원자를 나타내는 알파벳 뒤에 따르는 숫자는 그 원자가 몇 개 포함되어 있는지를 뜻한다. 따라서 COOHHH 분자는 CO2H3로 나타낼 수 있다. 이 문제에서, 숫자는 항상 2 이상 9 이하로만 입력으로 주어진다. 따라서 CO23과 같이 숫자가 두자리인..