본문 바로가기

Algorithm

(640)
백준 10545 뚜기뚜기메뚜기 메뚜기 재석이는 간만에 목초지에서 신났당. 무지무지 신났당. 너무너무 신나서 뛰어놀다가 그만!! 핸드폰을 물웅덩이에 빠뜨리고 말았다. 그 덕에 핸드폰은 젖어버렸고, 자판은 요상하게 작동한다. 자판의 키 중 하나를 누르면, 마치 다른 키를 누른 것처럼 동작한다. 다행히도, 두 키가 같은 동작을 하지는 않기 때문에 재석이는 모든 문자를 입력할 수 있다. 재석이는 자판을 눌러보면서 어떤 키가 어떤 동작을 하는지를 모두 알아냈다. 이제 문자를 보내려는데, 재석이는 메뚜기라서 누군가의 도움이 필요할 것 같다. 이 그림은 핸드폰의 자판이다(안타깝게도 재석이는 메뚜기라 스마트폰을 사지 못 했다.). 예를 들어, a를 입력하고 싶으면 2를 한 번 누르면 되고, b를 입력하고 싶으면 2를 두 번 누르면 된다. 만약 똑같..
백준 5622번 다이얼 상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다. 전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다. 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다. 상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다. 할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 시간을 구하..
백준 2562번 최대값 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다. sorting도 필요없이 그냥 너무 쉬운 문제..... #include using namespace std; int main(void) { int arr[9]; int n; for(int i=0; i>arr[i]; } int max=0; for(int i=0; imax){ max =arr[i]; } } for(int i =0; i
백준 1100번 하얀칸 체스판은 8*8크기이고, 검정 칸과 하얀 칸이 번갈아가면서 색칠되어 있다. 가장 왼쪽 위칸 (0,0)은 하얀색이다. 체스판의 상태가 주어졌을 때, 하얀 칸 위에 말이 몇 개 있는지 출력하는 프로그램을 작성하시오. 2차원 배열로 간단히 풀 수 있는 문제. #include using namespace std; int main(void) { int count=0; char arr[8][8]; for(int i=0; i>arr[i]; } for(int i=0; i
백준 10821번 정수의 개수 숫자와 콤마로만 이루어진 문자열 S가 주어진다. 이 때, S에 포함되어있는 정수의 개수를 구하는 프로그램을 작성하시오. S의 첫 문자와 마지막 문자는 항상 숫자이고, 콤마는 연속해서 주어지지 않는다. 또, 0으로 시작하는 정수는 주어지지 않는다. 너무 쉬웠던 문제라 이게 맞나 싶을 정도였음.. #include #include using namespace std; int main(void) { string str; int cnt=1; cin>>str; for(int i=0; i
백준 10866번 덱 정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여덟 가지이다. push_front X: 정수 X를 덱의 앞에 넣는다. push_back X: 정수 X를 덱의 뒤에 넣는다. pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 덱에 들어있는 정수의 개수를 출력한다. empty: 덱이 비어있으면 1을, 아니면 0을 출력한다. front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -..
백준 10845번 큐 push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. 배열 사용하든지 벡터를 사용하든지 기능을 직접 구현하니 문제 조건 보다 메모리를 더 쓰게 되어서 자꾸 틀렸다고 하는 탓에, 그냥 STL에서 제공하는 queue를 사용해서 하기로 했다. 뭐 너무나도 쉬운문제.... ..
백준 10828번 스택 정수를 저장하는 스택을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 다섯 가지이다. push X: 정수 X를 스택에 넣는 연산이다. pop: 스택에서 가장 위에 있는 정수를 빼고, 그 수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 스택에 들어있는 정수의 개수를 출력한다. empty: 스택이 비어있으면 1, 아니면 0을 출력한다. top: 스택의 가장 위에 있는 정수를 출력한다. 만약 스택에 들어있는 정수가 없는 경우에는 -1을 출력한다. 스택을 구현하는데 있어 시간을 최소로 하는 방법은 const 상수 MAX를 지정하여 배열을 생성하고 , 배열의 size로 사용할 변수를 지정하여 그 변수를 증가시키고 감소시키며 배열에 값을 저..