본문 바로가기

[BOJ] 2677 단지번호붙이기 단지번호붙이기 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 128 MB 27242 10442 7068 38.476% 문제 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집들의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여기서 연결되었다는 것은 어떤 집이 좌우, 혹은 아래위로 다른 집이 있는 경우를 말한다. 대각선상에 집이 있는 경우는 연결된 것이 아니다. 는 을 단지별로 번호를 붙인 것이다. 지도를 입력하여 단지수를 출력하고, 각 단지에 속하는 집의 수를 오름차순으로 정렬하여 출력하는 프로그램을 작성하시오. 입력 첫 번째 줄에는 지도의 크기 N(정사각형이므로 가로와 세로의 크기는 같으며 5≤N≤2..
[Algorithm] 프랙탈 수 문제크기 N의 프랙탈 수는 다음과 같이 출력된다.크기 N-1의 프랙탈 수를 출력한다. (단, 숫자 1에 대한 프랙탈 수는 1이다)그 다음에 숫자 N을 출력한다.그 다음에 크기 N-1 프랙탈 수를 출력한다.예를 들어, 숫자 2에 대한 프랙탈 수는 “1 2 1”이며, 숫자 3에 대한 프랙탈 수는 “1 2 1 3 1 2 1”이다. 숫자 N이 주어질 때, 크기 N의 프랙탈 수를 출력하는 프로그램을 작성하시오. 입력첫 번째 줄에 숫자 N이 주어진다. ( 1 ≤ N ≤ 20 ) 출력첫째 줄에 크기 N의 프랙탈 수를 출력한다. 예제 입력4 예제 출력1 2 1 3 1 2 1 4 1 2 1 3 1 2 1 #include void fractal(int n){ if(n>=2){ fractal(n-1); } printf("%..
[Algorithm] mountain 문제봉우리가 여러개인 산 모양을 출력한다. 산 모양은 그림과 같고 좌우 대칭이다. 입력첫 번째 줄에 숫자를 입력 받는다. 숫자의 크기는 20보다 작은 자연수이다. 출력출력 예의 형식으로 출력한다. 예제 입력3 예제 출력1213121 예제 입력5 예제 출력1213121412131215121312141213121 어렵지 않은 재귀함수 문제였다.직접 적어보니 a(n-1) (n) a(n-1) 공식이 성립함을 알 수 있었고, 다음과 같이 구현하였다. #include void printMountain(int n){ if(n>=2){ printMountain(n-1); } printf("%d",n); if(n>=2){ printMountain(n-1); }} int main() { //Please Enter Your..
[Algorithm] Recursive Practices ◈ n^m 구하기 #include using namespace std; int getPower(int a,int b){ // n^m을 반환하는 함수 if(b==0) return 1; return getPower(a,b-1)*a;}int main() { //Please Enter Your Code Here int n,m; cin>>n>>m; cout
[Algorithm] Recursive Function 의미란? 귀납적 계산 방법 (귀납적 문제해결 방법) 크게 두 가지 계산 방법이 있음. 1. 순차적 2. 귀납적 ◈ 순차적 계산법 예를 들면, 4의 약수의 개수를 구하여라.1로 나누어지면 c++;2로 나누어지면 c++;....스텝별로 하는 것을 의미한다. 즉, 반복문을 통한 계산이 의미하는 것이 첫 번째 계산법이다. ◈ 귀납적 계산법 팩토리얼을 구하기 위해서 팩토리얼을 쓴다. 귀납적으로 정의된 밑의 식이 참된 정의이다. f(5) = 5 x f(4) = 5 x 4 x f(3) .... = 5 x 4 x 3 x 2 x 1 x f(0) 귀납적으로 정의해야 하는 것들은 반드시 멈추어야 하는 지시가 있어야 한다. 0! = 1 (정의) n ! 은 n x (n-1)! , 0! = 1 이라는 정의가 필요하다. "나" 를..
[Algorithm] 문자열 압축 문제문자열의 길이가 굉장히 길 경우, 이를 압축하여 짧게 만들어야 할 때가 종종 있다. 이 문제에서는 문자열이 주어졌을 때, 다음과 같은 방법으로 압축한 결과를 출력하는 프로그램을 작성한다. 예를 들어, 문자열이 AAABBBBBCCCCDDDDEFFF 라고 하자. 이 문자열을 압축하면, 연속으로 같은 문자가 나오는 부분에, 그 문자가 몇번 나왔는지를 적어줌으로써 압축한다. 즉, 이 문자열은 3A5B4C4DE3F 로 압축된다. E는 1개밖에 없기 때문에 따로 1을 적어주지 않는다. 입력첫 번째 줄에 압축하고자 하는 문자열이 주어진다. 문자열의 길이는 1000보다 작다. 문자열에 구성된 알파벳은 대문자다. 출력문자열을 압축한 결과를 출력한다. 예제 입력AAABBBBBCCCCDDDDEFFF 예제 출력3A5B4C..
[Algorithm] 팰린드롬 조사 문제문자열이 주어질 때, 이것이 팰린드롬인지 조사하는 프로그램을 작성하시오. 팰린드롬이란, 앞으로 읽을 때와 뒤로 읽을 때의 결과가 같은 문자열을 말한다. 입력첫 번째 줄에 문자열이 주어진다. ( 1 ≤ 문자열의 길이 ≤ 1,000 ) 출력입력된 문자열이 팰린드롬이면 YES, 아니면 NO를 출력한다. 예제 입력abcba 예제 출력YES 예제 입력abcbd 예제 출력NO 정답을 확실히 맞추진 못했다.. 73%로 맞았으나, 다시 한 번 풀어봐야할거 같다!! #include #include using namespace std; int main() { //Please Enter Your Code Here char str[1000]; char str2[1000]; char *ptr = str; int i,j,tm..
[Algorithm] 문자열 정렬 문제n개의 문자열이 주어질 때, 이 문자열을 사전순으로 빠른 순서대로 정렬하는 프로그램을 작성하시오. 입력첫 번째 줄에 문자열의 개수 n이 주어진다 ( 1 ≤ n ≤ 100 ) 그 후 n개의 줄에 대하여 정렬하고자 하는 문자열이 주어진다 ( 1 ≤ 문자열의 길이 ≤ 100 ) 출력문자열을 사전순으로 빠른 순서대로 정렬한 결과를 출력한다. 예제 입력9 acid apple banana acquire cat crop crab power cat 예제 출력acid acquire apple banana cat cat crab crop power #include#include#include using namespace std; int main(){ vector a; int n; cin>>n; for(int i=0; ..