#include <bits/stdc++.h>
using namespace std;
//STL vector
int main()
{
    vector<int> vec;
    vector<int> vec1(10);
    vector<int> vec2(40, 3); 


    vec.push_back(5);
    vec.push_back(3);
    vec.push_back(1);
    vec.insert(vec.begin(), 2);

    for(vector<int>::iterator itr=vec.begin(); itr!=vec.end(); itr++){
        if(*itr == 3){
            vec.insert(itr, 77);
            break;
        }
    }

    printf("\n");
    for(auto x : vec){
        printf("%d ", x);
    }


    vec.pop_back();
    vec.erase(vec.begin());
    printf("\n");
    for(auto x : vec){
        printf("%d ", x);
    }

    printf("\nsize :%d fron :%d rear: %d", vec.size(), vec.front(), vec.back());


    vec.assign(5, 4);
    printf("\n");
    for(auto x : vec){
        printf("%d ", x);
    }

    vec.clear();
    vec = vector<int>();
    printf("\n");
    for(auto x : vec){
        printf("%d ", x);
    }
    return 0;
}

 

'정보올림피아드-KOI' 카테고리의 다른 글

정올 - visual studio에서 bits/stdc++.h  (0) 2019.12.17

 

https://www.acmicpc.net/problem/1759

 

 

1759번: 암호 만들기

첫째 줄에 두 정수 L, C가 주어진다. (3 ≤ L ≤ C ≤ 15) 다음 줄에는 C개의 문자들이 공백으로 구분되어 주어진다. 주어지는 문자들은 알파벳 소문자이며, 중복되는 것은 없다.

www.acmicpc.net

#include "bits/stdc++.h"
using namespace std;
//암호 만들기
char arr[15];
int n, m;

void recursive(int start, int cnt1, int cnt2, string str) {
    //printf("==%s %d %d\n", str.c_str(), cnt1, cnt2);
    if (str.size() == n && cnt1 >= 1 && cnt2 >= 2) {
        printf("%s\n", str.c_str());
        return;
    }
   for (int i=start; i<m; i++) {
        //str += arr[i];
        if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'i' || arr[i] == 'o' || arr[i] == 'u') {
            cnt1++;
        }
        else {
            cnt2++;
        }
        recursive(i+1, cnt1, cnt2, str+arr[i]);
        if (arr[i] == 'a' || arr[i] == 'e' || arr[i] == 'i' || arr[i] == 'o' || arr[i] == 'u') {
            cnt1--;
        }
        else {
            cnt2--;
        }
   }
}

int main() {
   cin >> n >> m;
   for (int i=0; i<m; i++) {
        cin >> arr[i];
   }
   sort(arr, arr + m);
   recursive(0, 0, 0, "");
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 - 퇴사  (0) 2022.03.19
백준 - 부분수열의 합  (0) 2022.03.19
백준 - 로또  (0) 2022.03.19
백준 숫자카드 - 이분탐색  (0) 2022.03.18
백준 1,2,3 더하기 (브루트 포스)  (0) 2022.03.18

https://www.acmicpc.net/problem/14501

 

14501번: 퇴사

첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.

www.acmicpc.net

 

 

 

#include "bits/stdc++.h"
using namespace std;
//퇴사
int n, maxi;
pair<int, int> arr[15];

void recursive(int start, int sum) {
    if (start >= n) {
        if (sum > maxi) maxi = sum;
        return;
    }
    for (int i=start; i<n; i++) {
        if (i+arr[i].first <= n) {
            recursive(i+arr[i].first, sum+arr[i].second);
        }
        else {
            recursive(i+arr[i].first, sum);
        }
    }
}

int main() {
    cin >> n;
    for (int i=0; i<n; i++) {
        cin >> arr[i].first >> arr[i].second;
    }
    recursive(0, 0);
    printf("%d", maxi);
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 - 암호만들기  (0) 2022.03.19
백준 - 부분수열의 합  (0) 2022.03.19
백준 - 로또  (0) 2022.03.19
백준 숫자카드 - 이분탐색  (0) 2022.03.18
백준 1,2,3 더하기 (브루트 포스)  (0) 2022.03.18

https://www.acmicpc.net/problem/1182

 

1182번: 부분수열의 합

첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다.

www.acmicpc.net

 

JW

 

#include "bits/stdc++.h"
using namespace std;
//부분수열의 합
int arr[20], n, m, cnt;

void recursive(int start, int level, int sum) {
    if (start == level && sum == m) {
        cnt++;
    }
    for (int i=start; i<n; i++) {
        recursive(i+1, level, sum+arr[i]);
    }
}

int main() {
    cin >> n >> m;
    for (int i=0; i<n; i++) {
        cin >> arr[i];
    }
    for (int i=1; i<=n; i++) {
        recursive(0, i, 0);
    }
    printf("%d", cnt);
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 - 암호만들기  (0) 2022.03.19
백준 - 퇴사  (0) 2022.03.19
백준 - 로또  (0) 2022.03.19
백준 숫자카드 - 이분탐색  (0) 2022.03.18
백준 1,2,3 더하기 (브루트 포스)  (0) 2022.03.18

https://www.acmicpc.net/problem/6603

 

6603번: 로또

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있다. 첫 번째 수는 k (6 < k < 13)이고, 다음 k개 수는 집합 S에 포함되는 수이다. S의 원소는 오름차순으로

www.acmicpc.net

 

JW

#include "bits/stdc++.h"
using namespace std;
//로또
int arr[13], result[6], n = 1;

void recursive(int start, int index) {
    if (index == 6) {
        for (int i=0; i<6; i++) {
            printf("%d ", result[i]);
        }
        printf("\n");
        return;
    }
    for (int i=start; i<n; i++) {
        result[index] = arr[i];
        recursive(i+1, index+1);
    }
}

int main() {
    while (n != 0) {
        cin >> n;
        for (int i=0; i<n; i++) {
            cin >> arr[i];
        }
        recursive(0, 0);
        printf("\n");
    }
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 - 퇴사  (0) 2022.03.19
백준 - 부분수열의 합  (0) 2022.03.19
백준 숫자카드 - 이분탐색  (0) 2022.03.18
백준 1,2,3 더하기 (브루트 포스)  (0) 2022.03.18
백준 숨바꼭질 4 (역추적)  (0) 2022.03.14

https://www.acmicpc.net/problem/10815

 

10815번: 숫자 카드

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

 

 

 

#include "bits/stdc++.h"
using namespace std;
// 숫자 카드
int main() {
    int n, m, arr[10000], finding[10000];
    cin >> n;
    for (int i=0; i<n; i++) {
        cin >> arr[i];
    }
    sort(arr, arr + n);
    cin >> m;
    for (int i=0; i<m; i++) {
        cin >> finding[i];
    }
    for (int i=0; i<m; i++) {
        int l = 0, r = n-1;
        bool found = false;
        while (l <= r) {
            int a = (l + r)/2;
            if (finding[i] == arr[a]) {
                printf("1 ");
                found = true;
                break;
            }
            if (finding[i] > arr[a]) {
                l = a+1;
            }
            if (finding[i] < arr[a]) {
                r = a-1;
            }
        }
        if (!found) printf("0 ");
    }
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 - 부분수열의 합  (0) 2022.03.19
백준 - 로또  (0) 2022.03.19
백준 1,2,3 더하기 (브루트 포스)  (0) 2022.03.18
백준 숨바꼭질 4 (역추적)  (0) 2022.03.14
백준 일곱 난쟁이  (0) 2022.03.14

 

https://www.acmicpc.net/problem/9095

 

9095번: 1, 2, 3 더하기

각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.

www.acmicpc.net

JW

 

 

#include "bits/stdc++.h"
using namespace std;
//1, 2, 3 더하기
int cnt, arr[10], n;

void recursive(int sum) {
    if (sum == n) {
        cnt++;
        return;
    }
    if (sum > n) return;
    for (int i=1; i<=3; i++) {
        recursive(sum+i);
    }
}

int main() {
    int t;
    cin >> t;
    while (t--) {
        cnt = 0;
        cin >> n;
        for (int i=1; i<=3; i++) {
            recursive(i);
        }
        printf("%d\n", cnt);
    }
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 - 로또  (0) 2022.03.19
백준 숫자카드 - 이분탐색  (0) 2022.03.18
백준 숨바꼭질 4 (역추적)  (0) 2022.03.14
백준 일곱 난쟁이  (0) 2022.03.14
백준 2×n 타일링 2  (0) 2022.03.14

 

https://www.acmicpc.net/problem/13913

 

13913번: 숨바꼭질 4

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일

www.acmicpc.net

 

 

 

 

 

#include <bits/stdc++.h>
using namespace std;
//숨바꼭질 4
int main(void) {
    queue<int> q;
    int n, m, visited[10000] = {0,}, time[10000] = {0,};
    cin >> n >> m;

    q.push(n);
    visited[n] = 1;

    while (!q.empty()) {
        int now = q.front();
        q.pop();
        if (now == m) {
            printf("%d\n", time[m]);
            break;
        }
        if (time[now-1] >= 0 && visited[now-1] == 0) {
            q.push(now-1);
           visited[now-1] = 1;
           time[now-1] = time[now] + 1;
        }
        if (time[now+1] <= 10000 && visited[now+1] == 0) {
            q.push(now+1);
            visited[now+1] = 1;
            time[now+1] = time[now] + 1;
        }
        if (time[now*2] <= 10000 && visited[now*2] == 0) {
            q.push(now*2);
            visited[now*2] = 1;
            time[now*2] = time[now] + 1;
        }
    }
    int path[10000], index = 0;
    int now = m;
    path[index] = now;
    index++;
    while(now != n) {
        //printf("===%d \n", now);
        if (now-1 >= 0 && visited[now-1] == 1 && time[now-1] == time[now]-1) {
            now = now - 1;
        }
        else if (now+1 <= 10000 && visited[now+1] == 1 && time[now+1] == time[now]-1) {
            now = now+1;
        }
        else if (now % 2 == 0 && visited[now/2] == 1 && time[now/2] == time[now]-1) {
            now = now/2;
        }
        path[index] = now;
        index++;
    }
    //return 0;

    for (int i=index-1; i>=0; i--) {
        printf("%d ", path[i]);
    }

    return 0;
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 숫자카드 - 이분탐색  (0) 2022.03.18
백준 1,2,3 더하기 (브루트 포스)  (0) 2022.03.18
백준 일곱 난쟁이  (0) 2022.03.14
백준 2×n 타일링 2  (0) 2022.03.14
백준 꿀따기 21758번 (11점 )  (0) 2022.03.11

 

 

https://www.acmicpc.net/problem/2309

 

2309번: 일곱 난쟁이

아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다.

www.acmicpc.net

 

#include "bits/stdc++.h"
using namespace std;
// 일곱 난쟁이
int main() {
    int height[9], sum = 0;
    for (int i=0; i<9; i++) {
        cin >> height[i];
        sum += height[i];
    }
    sort(height, height+9);
    for (int i=0; i<8; i++) {
        for (int j=i+1; j<9; j++) {
            if (sum - height[i] - height[j] == 100) {
                for (int k=0; k<9; k++) {
                    if (k == i || k == j) continue;
                    printf("%d\n", height[k]);
                }
                return 0;
            }
        }
    }
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 1,2,3 더하기 (브루트 포스)  (0) 2022.03.18
백준 숨바꼭질 4 (역추적)  (0) 2022.03.14
백준 2×n 타일링 2  (0) 2022.03.14
백준 꿀따기 21758번 (11점 )  (0) 2022.03.11
백준 균형잡힌 세상  (0) 2022.03.07

https://www.acmicpc.net/problem/11727

 

11727번: 2×n 타일링 2

2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다.

www.acmicpc.net

JW 

 

#include "bits/stdc++.h"
using namespace std;
// 2*n 타일링 2
int dp[1001];
int recursive(int n) {
    if (n == 1) return 1;
    if (n == 2) return 3;
    if (dp[n] != 0) {
        return dp[n];
    }
    dp[n] = recursive(n-1)%10007 + 2*recursive(n-2)%10007;
    return dp[n];
}

int main() {
    int n;
    cin >> n;
    printf("%d", recursive(n)%10007);
}

 

 

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 숨바꼭질 4 (역추적)  (0) 2022.03.14
백준 일곱 난쟁이  (0) 2022.03.14
백준 꿀따기 21758번 (11점 )  (0) 2022.03.11
백준 균형잡힌 세상  (0) 2022.03.07
백준 소수 구하기 1929  (0) 2022.03.07

https://www.acmicpc.net/problem/21758

 

21758번: 꿀 따기

첫 번째 줄에 가능한 최대의 꿀의 양을 출력한다.

www.acmicpc.net

 

JW학생

 

#include "bits/stdc++.h"
using namespace std;
// 꿀 따기 (3중 for문)
int main() {
    int n, max = 0, arr[100000] = {0,};
    cin >> n;
    for (int i=0; i<n; i++) {
        cin >> arr[i];
    }
    for (int i=0; i<n; i++) {
        for (int j=0; j<n; j++) {
            if (j == i) continue;
            for (int k=0; k<n; k++) {
                if (k == i || k == j) continue;
                int itemp = i, jtemp = j;
                int sum = 0;
                while (itemp != k) {
                    if (itemp < k) itemp++;
                    else itemp--;
                    if (itemp == j) continue;
                    sum += arr[itemp];
                }
                while (jtemp != k) {
                    if (jtemp < k) jtemp++;
                    else jtemp--;
                    if (jtemp == i) continue;
                    sum += arr[jtemp];
                }
                if (sum > max) max = sum;
            }
        }
    }
    printf("%d", max);
}

 

 

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 일곱 난쟁이  (0) 2022.03.14
백준 2×n 타일링 2  (0) 2022.03.14
백준 균형잡힌 세상  (0) 2022.03.07
백준 소수 구하기 1929  (0) 2022.03.07
백준 토마토  (0) 2022.03.07

4949번: 균형잡힌 세상 (acmicpc.net)

 

4949번: 균형잡힌 세상

하나 또는 여러줄에 걸쳐서 문자열이 주어진다. 각 문자열은 영문 알파벳, 공백, 소괄호("( )") 대괄호("[ ]")등으로 이루어져 있으며, 길이는 100글자보다 작거나 같다. 입력의 종료조건으로 맨 마

www.acmicpc.net

 

 

#include <bits/stdc++.h>
using namespace std;
//균형잡힌 세상
int main() {
    string str;

    getline(cin, str);
    while (str != ".") {
        stack<char> bracket;
        int len = str.size();
        for (int i=0; i<len; i++) {
            if (str[i] == '(' || str[i] == '[') {
                bracket.push(str[i]);
            }
            else if (str[i] == ')' && !bracket.empty() && bracket.top() == '(') {
                bracket.pop();
            }
            else if (str[i] == ']' && !bracket.empty() && bracket.top() == '[') {
                bracket.pop();
            }
            else if (str[i] == ')' || str[i] == ']') {
                bracket.push('a');
                break;
            }
        }
        if (bracket.empty()) {
            printf("yes\n");
        }
        else {
            printf("no\n");
        }
        getline(cin, str);
    }
}

 

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 2×n 타일링 2  (0) 2022.03.14
백준 꿀따기 21758번 (11점 )  (0) 2022.03.11
백준 소수 구하기 1929  (0) 2022.03.07
백준 토마토  (0) 2022.03.07
스택 Stack  (0) 2022.02.04

https://www.acmicpc.net/problem/1929

 

1929번: 소수 구하기

첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다.

www.acmicpc.net

 

#include <bits/stdc++.h>
using namespace std;
//소수 구하기
int main() {
	int n, m;
	cin >> n >> m;
	for (int i=n; i<=m; i++) {
		bool prime = true;
		if (i == 1) prime = false;
		else {
			for (int j=2; j*j<=i; j++) {
				if (i % j == 0) {
					prime = false;
					break;
				}
			}
		}
		if (prime) printf("%d\n", i);
	}
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 꿀따기 21758번 (11점 )  (0) 2022.03.11
백준 균형잡힌 세상  (0) 2022.03.07
백준 토마토  (0) 2022.03.07
스택 Stack  (0) 2022.02.04
단어 뒤집기 2  (0) 2021.12.31

 

 

JW

 

 

#include <bits/stdc++.h>
using namespace std;
//토마토

int main() {
	queue<pair<int, int>> q;
	int n, m;
	int arr[1002][1002] = {0,}, visited[1002][1002] = {0,};
	cin >> n >> m;
	for (int i=1; i<=m; i++) {
		for (int j=1; j<=n; j++) {
			cin >> arr[i][j];
		}
	}

	for (int i=1; i<=m; i++) {
		for (int j=1; j<=n; j++) {
			if (arr[i][j] == 1) {
				q.push({i, j});
				visited[i][j] = 1;
			}
			else if (arr[i][j] == -1) {
				visited[i][j] = 1;
			}
		}
	}
	while (!q.empty()) {
		int x = q.front().first;
		int y = q.front().second;
		q.pop();
		if (x-1 != 0 && arr[x-1][y] == 0 && visited[x-1][y] == 0) {
			q.push({x-1, y});
			arr[x-1][y] = arr[x][y] + 1;
			visited[x-1][y] = 1;
		}
		if (x+1 != m+1 && arr[x+1][y] == 0 && visited[x+1][y] == 0) {
			q.push({x+1, y});
			arr[x+1][y] = arr[x][y] + 1;
			visited[x+1][y] = 1;
		}
		if (y-1 != 0 && arr[x][y-1] == 0 && visited[x][y-1] == 0) {
			q.push({x, y-1});
			arr[x][y-1] = arr[x][y] + 1;
			visited[x][y-1] = 1;
		}
		if (y+1 != n+1 && arr[x][y+1] == 0 && visited[x][y+1] == 0) {
			q.push({x, y+1});
			arr[x][y+1] = arr[x][y] + 1;
			visited[x][y+1] = 1;
		}
	}
	for (int i=1; i<=m; i++) {
		for (int j=1; j<=n; j++) {
			if (visited[i][j] == 0) {
				printf("-1");
				return 0;
			}
		}
	}
	int maxi = 0;
	for (int i=1; i<=m; i++) {
		for (int j=1; j<=n; j++) {
			if (arr[i][j] > maxi) {
				maxi = arr[i][j];
			}
		}
	}
	printf("%d", maxi-1);
}

 

 

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 균형잡힌 세상  (0) 2022.03.07
백준 소수 구하기 1929  (0) 2022.03.07
스택 Stack  (0) 2022.02.04
단어 뒤집기 2  (0) 2021.12.31
백준 : 가운데를 말해요 1655번  (0) 2020.05.10

 

YT 구현

 

#include <bits/stdc++.h>
using namespace std;
//함수 3 형성평가6

int cal(int sum, int n){
    if(n==0){
        return sum;
    }

    if(n%10 != 0) sum *= n%10;

    return cal(sum, n/10);
}

int main(){
    int a,b,c;
    scanf("%d %d %d",&a, &b, &c);
    printf("%d", cal(1, a*b*c));
    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

함수 3 형성평가4 rev2  (0) 2022.02.06
함수 3 형성평가4 rev.1  (0) 2022.02.06
함수 3 형성평가3  (0) 2022.02.06
함수 3 형성평가2  (0) 2022.02.06
최단 경로 - 다익스트라 - dijkstra  (0) 2022.02.01

 

HW 구현

 

#include <bits/stdc++.h>
using namespace std;
//함수 3 형성평가4 rev2
int d[100];
int cal(int n){
    if(n == 1 || n == 2){
        return n;
    }
    if(d[n] != 0) return d[n];
    d[n] = (cal(n-1) * cal(n-2))%100;
    return d[n];
}
int main(){
    int n;
    scanf("%d",&n);
    printf("%d", cal(n));
    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

함수 3 형성평가6  (0) 2022.02.06
함수 3 형성평가4 rev.1  (0) 2022.02.06
함수 3 형성평가3  (0) 2022.02.06
함수 3 형성평가2  (0) 2022.02.06
최단 경로 - 다익스트라 - dijkstra  (0) 2022.02.01

JW 구현

 

#include <bits/stdc++.h>
using namespace std;
//함수 3 형성평가4

int cal(int n){
    if(n == 1 || n == 2){
        return n;
    }
    int a = (cal(n-1) * cal(n-2))%100;
    return a;
}
int main(){
    int n;
    scanf("%d",&n);
    printf("%d", cal(n));
    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

함수 3 형성평가6  (0) 2022.02.06
함수 3 형성평가4 rev2  (0) 2022.02.06
함수 3 형성평가3  (0) 2022.02.06
함수 3 형성평가2  (0) 2022.02.06
최단 경로 - 다익스트라 - dijkstra  (0) 2022.02.01

JW 재귀함수

 

 

#include <bits/stdc++.h>
using namespace std;
//함수 3 형성평가3
int a, b;
int d[100];
int cal(int sum, int index){
    if(index > 3 || sum > b) return 0;
    
    if(index == 3 && sum == b){
        for(int i=0; i<a; i++){
            printf("%d ", d[i]);
        }
        printf("\n");
        return a;
    }


    for(int i=1; i<=6; i++){
        d[index] = i;
        cal(sum+i, index + 1);
    }
}
int main(){

    scanf("%d %d",&a, &b);
    cal(0, 0);
    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

함수 3 형성평가4 rev2  (0) 2022.02.06
함수 3 형성평가4 rev.1  (0) 2022.02.06
함수 3 형성평가2  (0) 2022.02.06
최단 경로 - 다익스트라 - dijkstra  (0) 2022.02.01
문자열1 - 자가진단9  (0) 2022.01.19

이 ㅇ ㅎ 재귀함수

 

 

#include <bits/stdc++.h>
using namespace std;
//함수 3 형성평가2
int cal(int a){
    if(a==1 || a==2){
        printf("%d ", a);
        return a;
    }

    cal(a-2);
    printf("%d ", a);
    return 0;
}
int main(){
    int a;
    scanf("%d",&a);
    cal(a);
    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

함수 3 형성평가4 rev.1  (0) 2022.02.06
함수 3 형성평가3  (0) 2022.02.06
최단 경로 - 다익스트라 - dijkstra  (0) 2022.02.01
문자열1 - 자가진단9  (0) 2022.01.19
함수3 - 자가진단3  (0) 2022.01.07

10828번: 스택 (acmicpc.net)

 

10828번: 스택

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 

#include <bits/stdc++.h>
using namespace std;
//X정우 학생 
int main() {
   string cmd;
   int cnt, stack[10000] = {0,}, push;
   cin >> cnt;
   for (int i=0; i<cnt; i++) {
      cin >> cmd;
      if (cmd == "push") {
         cin >> push;
         for (int j=0; j<10000; j++) {
            if (stack[j] == 0) {
               stack[j] = push;
               break;
            }
         }
      }
      else if (cmd == "pop") {
         if (stack[0] == 0) {
            printf("-1\n");
         }
         else {
            for (int j=0; j<10000; j++) {
               if (stack[j] == 0) {
                  printf("%d\n", stack[j-1]);
                  stack[j-1] = 0;
                  break;
               }
            }
         }
      }
      else if (cmd == "size") {
         int cnt = 0;
         for (int j=0; j<10000; j++) {
            if (stack[j] != 0) {
               cnt++;
            }
            else {
               break;
            }
         }
         printf("%d\n", cnt);
      }
      else if (cmd == "empty") {
         if (stack[0] == 0) {
            printf("1\n");
         }
         else {
            printf("0\n");
         }
      }
      else if (cmd == "top") {
         if (stack[0] == 0) {
            printf("-1\n");
         }
         else {
            for (int j=0; j<10000; j++) {
               if (stack[j] == 0) {
                  printf("%d\n", stack[j-1]);
                  break;
               }
            }
         }
      }
   }
   
   return 0;
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 소수 구하기 1929  (0) 2022.03.07
백준 토마토  (0) 2022.03.07
단어 뒤집기 2  (0) 2021.12.31
백준 : 가운데를 말해요 1655번  (0) 2020.05.10
BOJ 외판원 순회 2 - 10971번  (0) 2020.05.08

#include <bits/stdc++.h>
using namespace std;
#define INF 1e9

int n, m, start;
vector<pair<int, int>> graph[100001];
bool visited[100001];
int d[100001];

int getSmallestNode(){
    int min_value = INF;
    int index = 0;
    for(int i=1; i<=n; i++){
        if(d[i] < min_value && !visited[i]){
            min_value = d[i];
            index = i;
        }
    }
    return index;
}

void dijkstra(int start){
    priority_queue<pair<int, int> > pq;
    pq.push({0,start});
    d[start] = 0;

    if(d[now] < dist) continue;
    while(!pq.empty()){
        int dist = -pq.top().first;
        int now = pq.top().second;
        pq.pop();

        for(int j=0; j<graph[now].size(); j++){
            int cost_via_now = d[now] + graph[now][j].second;
            if(cost_via_now < d[graph[now][j].first]){
                d[graph[now][j].first] = cost_via_now;
                pq.push(make_pair(-cost_via_now, graph[now][j].first));
            }
        }
    }

}


int main()
{

    cin >> n >> m >> start;

    for(int i=0; i<m; i++){
        int a, b, c;
        cin >> a >> b >>c;
        graph[a].push_back({b,c});
    }

    fill_n(d, 100001, INF);

    dijkstra(start);

    for(int i=1; i<=n; i++){
        if(d[i] == INF){
            cout << "INFINITY" << "\n";
        }
        else{
            cout << d[i] << "\n";
        }

    }
    return 0;
}


/*
입력 예시
6 11
1
1 2 2
1 3 5
1 4 1
2 3 3
2 4 2
3 2 3
3 6 5
4 3 3
4 5 1
5 3 1
5 6 2
*/

'정보올림피아드-KOI > 알고리즘 트레이닝' 카테고리의 다른 글

[이코테] 시각  (0) 2021.01.24
[이코테] 왕실의 나이트  (0) 2021.01.24
[이코테] #게임개발 파이썬  (0) 2021.01.24
[이코테] 상하좌우  (0) 2021.01.24
[이코테] 이진탐색  (0) 2020.12.14

이코테 - 최단경로 

 

#include <bits/stdc++.h>
using namespace std;
#define INF 1e9

int n, m, start;
vector<pair<int, int>> graph[100001];
bool visited[100001];
int d[100001];

int getSmallestNode(){
    int min_value = INF;
    int index = 0;
    for(int i=1; i<=n; i++){
        if(d[i] < min_value && !visited[i]){
            min_value = d[i];
            index = i;
        }
    }
    return index;
}

void dijkstra(int start){
    d[start] = 0;
    visited[start] = true;
    for(int j=0; j<graph[start].size(); j++){
        d[graph[start][j].first] = graph[start][j].second;
    }

    for(int i=0; i<n-1; i++){
        int now = getSmallestNode();
        visited[now] = true;
        for(int j=0; j<graph[now].size(); j++){
            int cost_via_now = d[now] + graph[now][j].second;
            if(cost_via_now < d[graph[now][j].first]){
                d[graph[now][j].first] = cost_via_now;
            }
        }
    }
}


int main()
{
    cin >> n >> m >> start;

    for(int i=0; i<m; i++){
        int a, b, c;
        cin >> a >> b >>c;
        graph[a].push_back({b,c});
    }

    fill_n(d, 100001, INF);

    dijkstra(start);

    for(int i=1; i<=n; i++){
        if(d[i] == INF){
            cout << "INFINITY" << "\n";
        }
        else{
            cout << d[i] << "\n";
        }

    }
    return 0;
}


/*
입력 예시
6 11
1
1 2 2
1 3 5
1 4 1
2 3 3
2 4 2
3 2 3
3 6 5
4 3 3
4 5 1
5 3 1
5 6 2
*/

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

함수 3 형성평가3  (0) 2022.02.06
함수 3 형성평가2  (0) 2022.02.06
문자열1 - 자가진단9  (0) 2022.01.19
함수3 - 자가진단3  (0) 2022.01.07
머지 정렬 Merge Sort  (0) 2021.12.31
#include <bits/stdc++.h>
using namespace std;
//문자열1 - 자가진단9

int main() {
    string str;
    cin >> str;
    int len = str.size();
    for (int i = 0; i < len; i++) {
        for (int j = len-1; j > 0; j--) {
            swap(str[j], str[j-1]);
        }
        cout << str << "\n";
    }
    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

함수 3 형성평가2  (0) 2022.02.06
최단 경로 - 다익스트라 - dijkstra  (0) 2022.02.01
함수3 - 자가진단3  (0) 2022.01.07
머지 정렬 Merge Sort  (0) 2021.12.31
머지 정렬 Merge Sort  (0) 2021.12.31
#include <bits/stdc++.h>
using namespace std;
//함수3 - 자가진단3

int f(int n){
    if(n==0)
        return n;

    return n + f(n-1);
}
int main() {
    int n;
    cin >> n;
    int a = f(n);
    printf("%d", a);
    return 0;
}

X혁 학생의 단어뒤집기2 성공 코드

 

#include <bits/stdc++.h>
using namespace std;
//단어 뒤집기 2
int main()
{
    stack<char> k,l;
    string a;
    int i,j,b;
    getline(cin,a);
    b=a.size();
    for(i=0;i<b;i++){
        if(a[i]=='<'){
            k.push(a[i]);
            while(!l.empty()){
                cout << l.top();
                l.pop();
            }
            cout << "<";
        }
        if(a[i]=='>'){
            k.pop();
            cout << ">";
        }
         if(!k.empty()&&a[i]!='<'){

            cout << a[i];
        }
         if(k.empty()&&a[i]!='>'){
            l.push(a[i]);
        }
    }


    return 0;
}

'정보올림피아드-KOI > BOJ' 카테고리의 다른 글

백준 토마토  (0) 2022.03.07
스택 Stack  (0) 2022.02.04
백준 : 가운데를 말해요 1655번  (0) 2020.05.10
BOJ 외판원 순회 2 - 10971번  (0) 2020.05.08
백준 - 프린터 큐 : 1966번  (0) 2020.04.26

동빈나의 머지소트

 

#include <bits/stdc++.h>
using namespace std;

int number = 8;
int sorted[8]; //정렬 배열은 받드시 전역 배열

void merge(int a[], int m, int middle, int n){ //m : 시작점, middle : 중간점, n : 끝점

    int i = m;
    int j = middle+1;
    int k = m;

    //작은 순서대로 배열에 삽입
    while(i <= middle && j <= n){
        if(a[i] <= a[j]){
            sorted[k] = a[i];
            i++;
        }
        else{
            sorted[k] = a[j];
            j++;
        }
        k++;
    }
    if(i > middle){
        for(int t = j; t<=n; t++){
            sorted[k] = a[t];
            k++;
        }
    }
    else{
        for(int t=i; t<=middle; t++){
            sorted[k] = a[t];
            k++;
        }
    }

    //sorted 에서 a배열로 옮겨준다
    for(int t=m; t<=n; t++){
        a[t] = sorted[t];
    }
}

void mergesort(int a[], int m, int n){
    //크기가 1보다 큰 경우
    if(m < n){
        int middle = (m+n)/2;
        mergesort(a, m, middle);
        mergesort(a, middle+1, n);
        merge(a,m, middle, n);
    }
}

int main()
{
    int array[8] = {7,6,5,8,3,5,9,1};
    mergesort(array, 0, number-1);
    for(int t=0; t<number; t++){
        printf("%d ", array[t]);
    }
    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

문자열1 - 자가진단9  (0) 2022.01.19
함수3 - 자가진단3  (0) 2022.01.07
머지 정렬 Merge Sort  (0) 2021.12.31
quick sort (퀵정렬) - 내림차순  (0) 2021.12.31
함수3 - 형성평가6  (0) 2021.12.30

동빈나의 머지소트

 

#include <bits/stdc++.h>
using namespace std;

int number = 8;
int sorted[8]; //정렬 배열은 받드시 전역 배열

void merge(int a[], int m, int middle, int n){ //m : 시작점, middle : 중간점, n : 끝점

    int i = m;
    int j = middle+1;
    int k = m;

    //작은 순서대로 배열에 삽입
    while(i <= middle && j <= n){
        if(a[i] <= a[j]){
            sorted[k] = a[i];
            i++;
        }
        else{
            sorted[k] = a[j];
            j++;
        }
        k++;
    }
    if(i > middle){
        for(int t = j; t<=n; t++){
            sorted[k] = a[t];
            k++;
        }
    }
    else{
        for(int t=i; t<=middle; t++){
            sorted[k] = a[t];
            k++;
        }
    }

    //sorted 에서 a배열로 옮겨준다
    for(int t=m; t<=n; t++){
        a[t] = sorted[t];
    }
}

void mergesort(int a[], int m, int n){
    //크기가 1보다 큰 경우
    if(m < n){
        int middle = (m+n)/2;
        mergesort(a, m, middle);
        mergesort(a, middle+1, n);
        merge(a,m, middle, n);
    }
}

int main()
{
    int array[8] = {7,6,5,8,3,5,9,1};
    mergesort(array, 0, number-1);
    for(int t=0; t<number; t++){
        printf("%d ", array[t]);
    }
    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

함수3 - 자가진단3  (0) 2022.01.07
머지 정렬 Merge Sort  (0) 2021.12.31
quick sort (퀵정렬) - 내림차순  (0) 2021.12.31
함수3 - 형성평가6  (0) 2021.12.30
591 : 함수3 - 자가진단6  (0) 2021.12.30
#include <bits/stdc++.h>
using namespace std;
//퀵정렬 : 내림차순

void quick(int data[], int left, int right){

    int num, i, j, temp;
    if(right > left){
        num = data[right];
        i = left - 1;
        j = right;

        for(;;){
            while(data[++i] > num);
            while(data[--j] < num);
            if(i >= j)
                break;

            swap(data[i], data[j]);
        }
        swap(data[i], data[right]);

        quick(data, left, i-1);
        quick(data, i+1, right);
    }
}
int main() {

    int a[10] = {2,3,4,0,9,8,7,6,5,1};
    for(auto x : a){
        printf("%d ", x);
    }
    puts("\n");
    quick(a, 0, 9);
    for(auto x : a){
        printf("%d ", x);
    }
    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

머지 정렬 Merge Sort  (0) 2021.12.31
머지 정렬 Merge Sort  (0) 2021.12.31
함수3 - 형성평가6  (0) 2021.12.30
591 : 함수3 - 자가진단6  (0) 2021.12.30
590 : 함수3 - 자가진단5  (0) 2021.12.30

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=136&sca=10d0 

 

JUNGOL

 

www.jungol.co.kr

 

 

#include <bits/stdc++.h>
using namespace std;
//함수3 - 형성평가6

int rec(int mul, int n){
    if(n == 0)
        return mul;
    int t = n%10;
    if( t != 0){
        mul *= t;
    }
    return rec(mul, n/10);
}
int main() {
    int a,b,c;
    cin >> a >> b >> c;
    int n = a * b * c;

    printf("%d ",rec(1, n));

    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

머지 정렬 Merge Sort  (0) 2021.12.31
quick sort (퀵정렬) - 내림차순  (0) 2021.12.31
591 : 함수3 - 자가진단6  (0) 2021.12.30
590 : 함수3 - 자가진단5  (0) 2021.12.30
592 : 함수3 - 자가진단4  (0) 2021.12.30

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=228&sca=10d0 

 

JUNGOL

 

www.jungol.co.kr

 

#include <bits/stdc++.h>
using namespace std;
//함수3 - 자가진단6

int rec(int index){
    if(index <= 3)
        return index;

    return rec(index/2) + rec(index-1);
}
int main() {
    int n;
    cin >> n;

    printf("%d ",rec(n));

    return 0;
}

'정보올림피아드-KOI > 기초 문법 문제' 카테고리의 다른 글

quick sort (퀵정렬) - 내림차순  (0) 2021.12.31
함수3 - 형성평가6  (0) 2021.12.30
590 : 함수3 - 자가진단5  (0) 2021.12.30
592 : 함수3 - 자가진단4  (0) 2021.12.30
589 : 함수3 - 자가진단3  (0) 2021.12.30

+ Recent posts