
📌 2164. 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다. 마지막으로 2를 버리고 나면, 남는 카드는 4가 된다. N이 주어졌을 때, 제일 마지막에 남게 되는 카..

📌 9012. 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 부른다. 한 쌍의 괄호 기호로 된 “( )” 문자열은 기본 VPS 이라고 부른다. 만일 x 가 VPS 라면 이것을 하나의 괄호에 넣은 새로운 문자열 “(x)”도 VPS 가 된다. 그리고 두 VPS x 와 y를 접합(concatenation)시킨 새로운 문자열 xy도 VPS 가 된다. 예를 들어 “(())()”와 “((()))” 는 VPS 이지만 “(()(”, “(())()))” , 그리고 “(()” 는 모두 VPS 가 아닌 문자열이다. 여러분은 입력으로 주어..

📌 10828. 스택 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. - push X: 정수 X를 스택에 넣는 연산이다. - pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. - size: 스택에 들어있는 정수의 개수를 출력한다. - empty: 스택이 비어있으면 1, 아니면 0을 출력한다. - top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. ✏️ 입력. 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정..

이클립스에서 MySQL을 연결하려면 MySQL Connector/j 을 다운로드 받아야한다. MySQL을 처음 설치할 때 같이 설치했다면 설치는 건너뛰어도 되는데, 나처럼 한 번에 설치하지 않은 분들에게 도움이 되길 바라며 기록해본다. 01) https://dev.mysql.com/downloads/connector/j/ 으로 접속 MySQL :: Download Connector/J MySQL Connector/J 8.0 is highly recommended for use with MySQL Server 8.0, 5.7 and 5.6. Please upgrade to MySQL Connector/J 8.0. dev.mysql.com 02) Select Operating System 옵션을 Platfo..

📌 1138. 한 줄로 서기 N명의 사람들은 매일 아침 한 줄로 선다. 이 사람들은 자리를 마음대로 서지 못하고 오민식의 지시대로 선다. 어느 날 사람들은 오민식이 사람들이 줄 서는 위치를 기록해 놓는다는 것을 알았다. 그리고 아침에 자기가 기록해 놓은 것과 사람들이 줄을 선 위치가 맞는지 확인한다. 사람들은 자기보다 큰 사람이 왼쪽에 몇 명 있었는지만을 기억한다. N명의 사람이 있고, 사람들의 키는 1부터 N까지 모두 다르다. 각 사람들이 기억하는 정보가 주어질 때, 줄을 어떻게 서야 하는지 출력하는 프로그램을 작성하시오. ✏️ 입력. 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 ..

📌 2902. KMP는 왜 KMP일까? KMP 알고리즘이 KMP인 이유는 이를 만든 사람의 성이 Knuth, Morris, Prett이기 때문이다. 이렇게 알고리즘에는 발견한 사람의 성을 따서 이름을 붙이는 경우가 많다. 또 다른 예로, 유명한 비대칭 암호화 알고리즘 RSA는 이를 만든 사람의 이름이 Rivest, Shamir, Adleman이다. 사람들은 이렇게 사람 성이 들어간 알고리즘을 두 가지 형태로 부른다. 첫 번째는 성을 모두 쓰고 이를 하이픈으로 이어 붙인 것이다. 예를 들면 Knuth-Morris-Pratt이다. 이것을 긴 형태라고 부른다. 두 번째로 짧은 형태는 만든 사람의 성의 첫 글자만 따서 부르는 것이다. 예를 들면, KMP이다. 동혁이는 매일매일 자신이 한 일을 모두 메모장에 적어..

📌 2839. 지능형 기차 최근에 개발된 지능형 기차가 1번역(출발역)부터 4번역(종착역)까지 4개의 정차역이 있는 노선에서 운행되고 있다. 이 기차에는 타거나 내리는 사람 수를 자동으로 인식할 수 있는 장치가 있다. 이 장치를 이용하여 출발역에서 종착역까지 가는 도중 기차 안에 사람이 가장 많을 때의 사람 수를 계산하려고 한다. 단, 이 기차를 이용하는 사람들은 질서 의식이 투철하여, 역에서 기차에 탈 때, 내릴 사람이 모두 내린 후에 기차에 탄다고 가정한다. 위와 같은 경우를 살펴보자. 이 경우, 기차 안에 사람이 가장 많은 때는 2번역에서 3명의 사람이 기차에서 내리고, 13명의 사람이 기차에 탔을 때로, 총 42명의 사람이 기차 안에 있다. 이 기차는 다음 조건을 만족하면서 운행된다고 가정한다. ..

✏️ static 키워드 - 객체 생성 없이 접근할 수 있는 멤버임을 의미하며, 변수나 메서드에 키워드로 사용된다 - static 키워드를 통해 생성한 멤버는 클래스가 메모리에 올라갈 때 자동으로 생성된다 = 객체 생성 없이 접근 가능하다 - 변하지 않고 유지되는 값은 매번 메모리에 로딩하는 과정을 거치는 것보다, 자동으로 올라가도록 하는 것이 더 효율적! - 즉, 인스턴스 없이 사용이 가능하므로 프로그램 내에서 공통으로 사용되는 데이터들을 관리할 때 사용된다 - static은 공통으로 값을 일정하게 유지하고 싶은 경우에만 사용하고 남발해서는 안된다 (예) 상수, 싱글톤 패턴... // 객체 생성할 필요가 없다 System.out.println(Math.abs(-10)); // 10 - java.lang..

✏️ 싱글톤 패턴 - 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다 - 최초 생성 이후에 호출된 생성자는 최초에 생성자가 생성한 객체를 리턴한다. - 고정된 메모리 영역을 얻으면서 동시에 단 한 번만 new를 사용하여 메모리 낭비를 방지할 수 있다. ✏️ 구현하기 private static BankService instance; 객체의 인스턴스를 저장할 필드를 생성한다. 싱글톤 패턴의 인스턴스는 단 하나만이 허용되므로, 모든 객체에서 공유하도록 static 필드로 생성한다. 접근 지정자는 private로 지정하여, 외부 접근을 막는다 private BankService() { customers = new Customer[MAX_CUSTOMERS]; numberOfCustomers = 0; } 객..

📌 Date - 날짜와 시간을 위한 속성값과 메서드를 제공하는 객체 - Date 객체는 1970년 1월 1일 UTC(협정 세계시) 자정과의 시간 차이를 밀리초로 나타내는 정수값으로 표현한다 💛 new Date( ) // default let date_now = new Date(); let date_now_str = Date(); console.log(date_now); // 2021-09-29T15:24:41.387Z console.log(date_now_str); // Thu Sep 30 2021 00:24:41 GMT+0900 (Korean Standard Time) console.log(typeof date_now); // object console.log(typeof date_now_str); /..