JUNGOL
-
JUNGOL 실력키우기 2514 : 문자열 찾기보관함 2018. 1. 9. 22:30
주어진 문자열에서 연속 3개의 문자가 IOI 이거나 KOI인 문자열이 각각 몇 개 있는지 찾는 프로그램을 작성하라.문자열은 알파벳의 대문자로만 이루어진다. 예를 들어 "KOIOIOI"라는 문자열은 KOI 1개 , IOI 2개가 포함되어있다. 입력은 한 줄이며 10,000자 이하의 알파벳 대문자로 구성된다. 출력은 2줄이며, 첫 번째 줄에는 KOI의 개수, 두 번째 줄에는 IOI의 개수를 각각 출력하라. [Copy] KOIOIOI [Copy] 1 2 [Copy] KORKDIOIDXHKOIOIOIOPKOI [Copy] 2 3 문제만 보고 좀 어려울라나 생각했는데 막상 풀려고 보니 그리 어렵지 않게 해결이 가능했습니다.문자열 길이가 짧아서 실행시간 초과되는 문제를 생각할 필요가 없어서 쉬웠던 것 같네요. 12..
-
JUNGOL 실력키우기 2604 : 그릇보관함 2018. 1. 8. 12:05
그릇을 바닥에 놓았을 때 그 높이는 10cm 이다. 그런데 두 개의 그릇을 같은 방향으로 포개면 그 높이는 5cm만 증가된다.만일 그릇이 서로 반대방향으로 쌓이면 높이는 그릇만큼, 즉 10cm 늘어난다. 그릇을 괄호 기호로 나타내어 설명해보자. 편의상 그릇이 쌓여지는 방향은 왼쪽에서 오른쪽이라고 가정한다. 그림에서 ‘(’은 그릇이 바닥에 바로 놓인 상태를 나타내며, ‘)’은 그릇이 거꾸로 놓인 상태를 나타낸다. 만일 그릇이 포개진 모양이 아래 그림 1(a)와 같다면 전체의 높이는 25cm가 된다.왜냐하면 처음 바닥에 있는 그릇의 높이가 10cm이고 이후 같은 방향으로 3개의 그릇이 포개져 있으므로 늘어난 높이는 5+5+5=15 이기 때문이다. 그림 1(b)와 같은 경우라면 그 높이는 10*4=40cm가 ..
-
JUNGOL 실력키우기 1534 : 10진수를 2 8 16진수로보관함 2017. 10. 30. 11:32
10진수를 입력 받아서 2, 8, 16진수로 바꾸어 출력하는 프로그램을 작성하시오. 입력의 첫줄에는 10진수 N(1≤N≤100,000)과 바꿀 진수 B(2, 8, 16)가 공백으로 구분하여 입력된다. 16진수에서 10이상의 수는 순서대로 'A', 'B', 'C', 'D', 'E', 'F'로 나타낸다. 입력받은 10진수를 B진수로 바꾸어 출력한다.27 211011 실력키우기 수학문제에 들어서 가장 쉬운 것 같은 문제인데요, 8진수, 16진수는 C++에서 공식적으로 지원되기 때문에 지난번에 만든 2진수로 출력하는 함수만 가져오면 해결이 가능한 문제입니다.저 같은 경우에는 8, 16진수 변환이 지원되는 것은 알고 있었는데 C++에서 어떤 식으로 사용하는지는 몰랐었는데 이번 기회에 알게 됐네요.8: oct, 1..
-
JUNGOL 실력키우기 1274 : 2진수를 10진수로보관함 2017. 10. 27. 19:23
2진수를 입력받아 10진수로 바꾸어주는 프로그램을 작성하시오. 입력받는 2진수는 8비트로 구성되어있으며 최상위비트는 부호비트이다. 즉, 최상위 비트의 값이 0이면 양수, 1이면 음수이며 음수의 경우 2의 보수로 구성되어있다. 최상위 비트를 제외한 나머지 7개의 비트를 1, 2의 보수로 바꾸는 방법: 1의 보수는 2진수의 1과 0을 바꾸면 된다. 1101000 -> 0010111 (2진수) (1의 보수) 2의 보수는 1의 보수의 마지막 비트에 1을 더한다. 0010111 (1의 보수) + 1 --------- 0011000 (2의 보수) 입력의 첫 줄에 8자리의 2진수가 들어온다. 출력의 첫 줄에 10진수로 변환한 값을 출력한다. [Copy] 00000101 [Copy] 5 [Copy] 10011000 [..
-
JUNGOL 실력키우기 2815 : 10진수를 2진수로보관함 2017. 10. 10. 20:45
10진수를 입력받아 2진수로 변환하는 프로그램을 작성하시오. 정수 N을 입력받는다. (1 [Copy] 26 [Copy] 11010 간단한 문제인데요, 저는 요즘 공부하고 있는 STL함수들을 이용해 본다고 하다가 JUNGOL에서 컴파일이 안되는 바람에 상당히 틀렸네요. 또, HINT를 보니 깔끔하게 재귀적으로 처리할 수 있는 방법을 적어놔서 그것을 보고 재귀 버전을 만들어 봤습니다. 10진수를 2진수로 변환하기 10진수를 2진수로 변환하기 위해서는 2진수를 10진수로 변환하는 과정을 역순으로 하여 2씩 묶어가면서 나머지를 1의 자리부터 확정해 나가면 된다. 10진수 21을 2진수로 변환하는 과정은 다음과 같다. 코드1 #include int two[50]; int change(int n) { int i; ..
-
JUNGOL 실력키우기 2814 : 이진수보관함 2017. 10. 8. 15:12
컴퓨터는 내부적으로 0과 1 두 개의 숫자만을 사용하여 모든 프로그램이 동작된다. 이렇게 두 개의 숫자만으로 이루어진 수를 이진수라 한다. 2진수를 입력받아 10진수로 변환하여 출력하는 프로그램을 작성하시오. 0과 1로만 이루어져 있는 30자리 이하의 2진수를 입력받는다. 입력된 2진수를 10진수로 변환하여 출력한다. [Copy] 10101 [Copy] 21 드디어 소수를 넘어 다른 문제로 넘어왔습니다. 이번 문제는 상당히 쉽다라고 생각하고 풀었는데 int형으로 하니 제대로 풀리지 않는군요. 다시보니 30자리까지 숫자가 등장한다고 되어있습니다. 덕분에 다시 힌트를 분석했는데, 결국 문자열을 사용한 것을 제외하면 동일한 코드였네요. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17..
-
JUNGOL 실력키우기 1901 : 소수 구하기보관함 2017. 10. 1. 14:42
소수(prime number)란 2이상의 수로써 1과 자기 자신 외에는 약수를 갖지 않는 수를 의미한다. 임의의 M값에 대하여 M에 가장 가까운 소수를 구하는 프로그램을 아래 조건에 따라 작성한다. 첫 번째 줄에는 처리해야 할 수의 개수 N을 입력 받는다. (N은 100이하의 정수) 다음 줄에는 처리해야할 수 N개(M1부터 Mn까지)를 한 줄에 한 개씩 차례로 입력 받는다. (Mi 는 1,000,000 이하의 양의 정수) 데이터의 크기가 주어진 범위를 벗어나는 입력은 없다. 임의의 값 Mi에 대해 차이가 가장 작은 소수를 구하여 출력한다. 만약 차이가 같은 소수가 여러 개이면 작은수부터 모두 출력한다. 출력되는 값은 1이상 1,000,000이하의 소수이어야 한다. [Copy]2 8 15 [Copy] 7 ..
-
JUNGOL 실력키우기 1740 : 소수보관함 2017. 9. 30. 21:39
자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최소값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100이 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최소값은 61이 된다. 입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다. M과 N은 10,000이하의 자연수이며, M은 N보다 같거나 작다. M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최소값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. [Copy] 60 100 [Copy] 620 61 이 직전 ..