코딩테스트 105

[C] 문자열 압축

문제 문자열의 길이가 굉장히 길 경우, 이를 압축하여 짧게 만들어야 할 때가 종종 있다. 이 문제에서는 문자열이 주어졌을 때, 같은 알파벳이 연속된 부분 문자열을 압축하여 결과를 출력하는 프로그램을 작성한다. 예를 들어, 문자열이 AAABBBBBCCCCDDDDEFFF 라고 하자. 이 문자열을 압축하면, 연속으로 같은 문자가 나오는 부분에, 그 문자가 몇번 나왔는지를 적어줌으로써 압축한다. 즉, 이 문자열은 3A5B4C4DE3F 로 압축된다. E는 1개밖에 없기 때문에 따로 1을 적어주지 않는다. 입력 첫 번째 줄에 압축하고자 하는 문자열이 주어진다. 문자열의 길이는 1000보다 작다. 문자열에 구성된 알파벳은 대문자다. 출력 문자열을 압축한 결과를 출력한다. 예제 입력 AAABBBBBCCCCDDDDEFF..

코딩테스트 2022.05.26

[C] 팰린드롬 조사

문제 문자열이 주어질 때, 이것이 팰린드롬인지 조사하는 프로그램을 작성하시오. 팰린드롬이란, 앞으로 읽을 때와 뒤로 읽을 때의 결과가 같은 문자열을 말한다. 입력 첫 번째 줄에 문자열이 주어진다. ( 1 ≤ 문자열의 길이 ≤ 1,000 ) 출력 입력된 문자열이 팰린드롬이면 YES, 아니면 NO를 출력한다. 예제 입력 abcba 예제 출력 YES 예제 입력 abcbd 예제 출력 NO #include #include //팰린드롬인지 아닌지 판별하는 함수 bool isPalindrome(char str[],int a, int b) { if(a>=b) return true; else if(str[a]!=str[b]) return false; else { return isPalindrome(str,a+1,b-1)..

코딩테스트 2022.05.26

[C] 과제물 망치기

문제 철수는 영희를 괴롭히는 것을 매우 좋아한다. 오늘도 철수는 영희를 어떻게 괴롭힐지 고민을 하다가, 영희가 최근에 작성하고 있던 문서가 떠올랐다. 이에 철수는 영희의 문서를 망쳐놓기로 결심한다. 바로 띄어쓰기를 모두 제거해버리는 것이다. 영희의 문서를 확인한 철수는, 띄어쓰기가 너무 많아 직접 모두 제거할 수는 없다는 것을 깨닫고 도움을 요청했다. 영희의 문서가 주어질 때, 띄어쓰기를 모두 제거하는 프로그램을 작성하시오. 입력 첫째 줄에 영희의 문서가 주어진다. 영희의 문서는 한 줄 짜리 문자열이며, 문서의 길이는 100,000을 넘지 않는다. 출력 문자열의 띄어쓰기를 모두 제거한 결과를 출력한다. 예제 입력 Please do not touch anything 예제 출력 Pleasedonottouch..

코딩테스트 2022.05.26

[C] 대소문자 변환

문제 문자열이 주어질 때, 대문자는 소문자로, 소문자는 대문자로 바꾸는 프로그램을 작성하시오. 알파벳이 아닌 문자는 그대로 유지한다. 입력 첫 번째 줄에 문자열이 주어진다. ( 1 ≤ 문자열의 길이 ≤ 1,000 ) 출력 문자열 내의 대문자는 소문자로, 소문자는 대문자로 바꾼 결과를 출력한다. 예제 입력 hELLO wORLD! 예제 출력 Hello World! #include #include int main() { //Please Enter Your Code Here char str[1000]; fgets(str,1000,stdin); int n=strlen(str); for(int i=0;i='a')&&(str[i]='A')&&(str[i]

코딩테스트 2022.05.26

[C] chebyshevtheo

문제 베르트랑-체비쇼프 정리는 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑(Joseph Louis François Bertrand, 1822–1900)이 1845년에 추측했고, 파프누티 체비쇼프(Пафнутий Львович Чебышёв, 1821–1894)가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17, 19, 23) n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 ..

코딩테스트 2022.05.26

[C] pfactorization

문제 정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오. 소인수란 소수인 인수(약수)를 의미한다. 입력 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. 출력 N의 소인수를 한 줄에 하나씩 오름차순으로 출력한다.. 예제 입력 72 예제 출력 2 2 2 3 3 예제 입력 3 예제 출력 3 예제 입력 6 예제 출력 2 3 예제 입력 9991 예제 출력 97 103 #include int main() { //Please Enter Your Code Here int n; scanf("%d",&n); for(int i=2;n>1;) { if(n%i==0) { printf("%d\n",i); n=n/i; } else i++; } return 0; }

코딩테스트 2022.05.26

[C] fmttalpha

문제 최홍우는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 2037년이 된 지금, 홍우는 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다. 그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이동 장치는 이동 거리를 급격하게 늘릴 경우 기계에 심각한 결함이 발생하는 단점이 있어서, 이전 작동시기에 k광년을 이동하였을 때는 k-1 , k 혹은 k+1 광년만을 다시 이동할 수 있다. 예를 들어, 이 장치를 처음 작동시킬 경우 -1..

코딩테스트 2022.05.26

[C] streetree

문제 직선으로 되어있는 도로의 한 편에 가로수가 임의의 간격으로 심어져있다. KOI 시에서는 가로수들이 모두 같은 간격이 되도록 가로수를 추가로 심는 사업을 추진하고 있다. KOI 시에서는 예산문제로 가능한 한 가장 적은 수의 나무를 심고 싶다. 편의상 가로수의 위치는 기준점으로 부터 떨어져 있는 거리로 표현되며, 가로수의 위치는 모두 양의 정수이다. 예를 들어, 가로수가 (1, 3, 7, 13)의 위치에 있다면 (5, 9, 11)의 위치에 가로수를 더 심으면 모든 가로수들의 간격이 같게 된다. 또한, 가로수가 (2, 6, 12, 18)에 있다면 (4, 8, 10, 14, 16)에 가로수를 더 심어야 한다. 심어져 있는 가로수의 위치가 주어질 때, 모든 가로수가 같은 간격이 되도록 새로 심어야 하는 가로..

코딩테스트 2022.05.26

[C] combinationzero

문제 n명의 사람중 m명을 순서에 상관없이 뽑는 경우의 수를 조합이라고 하며 nCm으로 나타낸다. nCm은 수식으로 n!/m!(n-m)! 으로 구할 수 있다. (5! = 1 * 2 * 3 * 4 * 5) n과 m이 주어졌을때 nCm의 끝자리 0의 개수를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 n, m(0≤m≤n≤1,000,000)이 들어온다. 출력 첫째 줄에 0의 개수를 출력한다. 예제 입력 25 12 예제 출력 2 #include int main() { //Please Enter Your Code Here int n,m; int count2=0; int count5=0; scanf("%d %d",&n,&m); // n! 일때 for(int i=2;i

코딩테스트 2022.05.26

[C] combinationpascal

문제 n명의 사람중 m명을 순서에 상관없이 뽑는 경우의 수를 조합이라고 하며 nCm으로 나타낸다. 이 조합은 파스칼의 삼각형과 아주 밀접한 관련이 있다고 한다. n과 m이 주어졌을때 nCm의 값을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 정수 n, m(0 ≤ m ≤ n ≤ 30)이 들어온다. 출력 첫째 줄에 nCm의 값을 출력한다. 예제 입력 5 2 예제 출력 10 #include int pascal(int n, int m) { if(m==0) return 1; else if(n==m) return 1; else return pascal(n-1,m)+pascal(n-1,m-1); } int main() { //Please Enter Your Code Here int n,m; scanf("%d %d..

코딩테스트 2022.05.26