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

 

JUNGOL | 문자열1 - 자가진단8 > 문제은행

공백을 포함한 100글자 이하의 문자열을 입력받아 문장을 이루는 단어의 개수를 출력하는 프로그램을 작성하시오. * 문장입력 할 때 gets()함수 대신 fgets() 함수를 사용하세요. C++14 적용!​

www.jungol.co.kr

 

 

#include <stdio.h>
#include <string.h>
int main()
{
    int i,a=0,len;
    char s[101];
    gets(s);
    len=strlen(s);
    for(i=0;i<len;i++){
        if(s[i]== ' ')
            a++;
    }
    printf("%d\n",a+1);
    return 0;
}

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

 

JUNGOL | 문자열1 - 자가진단6 > 문제은행

문자를 입력받아 알파벳 문자인 경우에는 그대로 출력하고 숫자인 경우는 아스키코드값을 출력하는 작업을 반복하다가 기타의 문자가 입력되면 종료하는 프로그램을 작성하시오. * 입출력예에서 진한글씨가 출력

www.jungol.co.kr

//문자열1 - 자가진단6
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
    int i,b,c;
    char a;
    while(1){
        scanf(" %c",&a);
        if(isalpha(a))
        {
            printf("%c \n",a);
        }
        else if('0'<=a&&a<='9')
        {
            printf("%d \n",a);
        }
        else
        {
            return 0;
        }
    }
    return 0;
}

 

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

 

15971번: 두 로봇

2018년 강원도에서 새로운 동굴이 발견되었다. 이 동굴에는 총 N개의 넓은 방이 존재하며 좁은 통로로 서로 연결되어 있는 것으로 밝혀졌다. N개의 방은 1번부터 N번까지의 번호를 붙여 1번 방, 2번 방, …, N번 방으로 부른다. 통로는 정확히 N-1개가 발견되었는데, 각각 서로 다른 두 방 사이를 연결시켜 주며 중간에 다른 통로와 이어지는 경우는 없다고 한다. 또한 이 통로들을 이용하여 임의의 두 방 사이를 이동하는 것이 가능하며, 임의의 두 방 사

www.acmicpc.net

 

 

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
/*
5 1 5
1 2 1
2 3 2
3 4 3
4 5 4
*/
int vi[100010],max1,tot;
vector <pair<int,int>> v[100010];

void dfs(int s, int e, int lmax, int l)
{
    if(s==e) {
        max1=lmax;
        tot=l;
    }
    else{
        vi[s]++;
        for(int i=0;i<v[s].size();i++)
        {
            if(vi[v[s][i].first]==0)
            {
                int last=lmax>v[s][i].second?lmax:v[s][i].second;
                dfs(v[s][i].first,e,last,l+v[s][i].second);
            }
        }
    }

}
int main()
{
    int r,r1,r2,i,s,e,d;

    scanf("%d %d %d",&r,&r1,&r2);
    for(i=1;i<r;i++)
    {
        scanf("%d %d %d",&s,&e,&d);
        v[s].push_back(make_pair(e,d));
        v[e].push_back(make_pair(s,d));
    }
    dfs(r1,r2,0,0);
    printf("%d",tot-max1);
    return 0;
}

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

 

15973번: 두 박스

표준 입력으로 두 박스의 정보가 한 줄에 하나씩 주어진다. 각 박스의 정보는 왼쪽 아래 꼭짓점 좌표 (x1, y1)과 오른쪽 위 꼭짓점 좌표 (x2, y2)로 구성되는데 이들 좌푯값 x1, y1, x2, y2 (x1 < x2, y1 < y2)가 공백을 사이에 두고 주어진다.

www.acmicpc.net

 

 

https://www.acmicpc.net/problem/15973
두박스 - 정올 2018 년도 중등 전국
#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{
    int a1, b1, a2, b2, x1, y1, x2, y2,i;
    int j,arr[100][100]={0,},cnt=0,f=0,l=0,k=0,g=0;
    scanf("%d %d %d %d %d %d %d %d",
          &a1,&b1,&a2,&b2,&x1,&y1,&x2,&y2);

    i=a1>x1 ?a1 : x1;
    j=a2>x2 ? x2 : a2;
    f=j-i;
    k=b1>y1?b1:y1;
    l=b2>y2?y2:b2;
    g=l-k;
    printf("== %d  %d\n", f, g);
    if(f>0 && g>0) puts("FACE");
    if((f>0 && g==0) || (f==0 && g>0)) puts("LINE");
    if(f<0 || g<0) puts("NULL");
    if(f==0 && g==0) puts("POINT");
    return 0;
}

2.2.1 부분집합 생성하기

 

vector <int > subset;
void search(int k){
	if(k == n+1){
    	//부분집합을 구한 상태임.
    }
    else{
    	//k를 부분집합에 포함시킨다.
        subset.push_back(k);
        search(k+1);
        subset.pop_back();
        //k를 부분집합에 포함시키지 않는다.
        search(k+1);
    }
}

 

 

2.2.2 순열 생성하기

vector <int> permutation;
bool chosen[n+1];

void search(){
	if(permutation.size() == n){
    	//순열을 만든 상태임
    }
   	else{
    	for(int i = 1; i <= n; i ++){
        	if(chosen[i]) continue;
            chosen[i] = true;
            permutation.push_back(i);
            search();
            chosen[i] = false;
            permutation.pop_back(i);
        }
    }
}


C++ 표준 라이브러리 next_permutation사용하기

for(int i = 1; i <=n; i ++){
	permutation.push_back(i);
}

do{
	//
}while(next_permutation(permutation.begin(), permutation.end());

#include <bits/stdc++.h>

표준 라이브러리 전체를 포함시키는 g++컴파일러의 기능이다. 이 것을 사용하면 iostream, vecotr, algorith 등의 라이브러리를 개별적으로 포함시키지 않다도 사용가능하다.

 

 

string s;

getline(cin, s)

입력 한줄을 통째로, 공백을 포함한 채로 읽어 들이는 방법

 

 

while(cin >> x)

만일 데이터의 양을 사전에 알수 없다면 사용.

 

 

freopen("input.txt", "r", stdin);

freopen("output.txt", "w", stdout);

몇몇 대회 시스템은 입력과 출력을 위해 파일을 사용하기도 한다. 이를 간단하게 처리하는 방법은 평소처럼 표준스트림을 사용하는 코드를 작성한 후, 위 두줄을 코드의 시작 부분에 추가한다.

 

 

ios::sync_with_stdio(0);

cin.tie(0);

코드 시작부분에 위 코드를 넣으면 입력과 출력을 좀더 효율적으로 할 수 있다.

단, 이코드를 사용했을 때는 scanf, printf와 같은 C언어 입출력 함수를 C++입출력 함수와 동시에 사용할 수 없다.

 

"\n" vs endl

개행 문자 "\n"는  endl보다 빠르다. 이는 endl을 상ㅇ하면 명시적으로 flush가 일어나기 때문이다.

 

 

long long x = 123456789123456789LL;

int 범위(32bits) = -2 * 10의 9승 ~  2 * 10의 9승

long long범위(64bits) = -9 * 10의 18승 ~ 9 * 10의 18승

 

 

int a = 123456789;

long long b = a*a;

cout << b << "\n";  //-1757895751

"a*a"를 저장하는 변수는 long long이지만, 계산은 결과가 int으로 되기때문에 에러를 유발한다.

a자료형을 long long으로 바꾸던지, (long long )a*a 으로 코드를 수정해야 한다.

 

나머지 연산 - skip

 

 

if(abs(a-b) < 1e-9){

     // a와 b가 일치한다

}

부동 소수점 실수를 == 연산자를 이용하여 비교하는 것은 위험한데, 이는 비교하는 값이 실제로는 일치하지만, 정밀도 오류로 인해 다르다는 결과가 나올 수도 있기 때문이다. 좀더 나은 방법은 두 실수의 차이가 x보다 작을 때 서로 일치한다고 판단하는 것이 좋다.

 

 

 

 

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

 

17618번: 신기한 수

평소에 수에 대한 관심이 많은 아이인 민철이는 오늘도 노트에 연필로 수를 더하거나 빼거나 곱하거나 나눠보면서 시간을 보내고 있다. 그러다가 18이라는 수는 신기한 성질을 가진다는 것을 알아냈다. 18을 이루는 각 자릿수인 1과 8을 합한 9는 18의 약수가 된다. 민철이는 18과 같이 모든 자릿수의 합으로 나누어지는 수를 여러 개 더 찾아냈는데, 12, 21도 그런 신기한 수였다. 민철이는 이렇게 모든 자릿수의 합으로 나누어지는 수를 “신기한 수”라고 부

www.acmicpc.net

 

 

 

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

int sum; 
void Div_sum(int num)
{
    if(num == 0)
    {
        return;
    }

    sum+=(num%10);
    Div_sum(num/10);
}

int main(void)
{
    int n;
    int cnt=0;
    scanf("%d", &n);

    for(int i=1; i<=n; i++)
    {
        Div_sum(i);
        if((i%sum) == 0)
        {
            cnt++;
        }
        sum = 0;
    }

    printf("%d", cnt);

    return 0;
}

 

 

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

int main() {
  int a;
  cin >> a;
  int cnt = 0;
  for(int i=1; i <=a; i ++)
  {
    int sum = 0;
    int temp = i;
    while(temp){
      sum = sum + temp%10;
      temp = temp / 10;
    }
    //cout << "== " << sum << "\n";
    if( i % sum == 0) cnt ++;
  }

  cout << cnt;
  
}

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

 

17619번: 개구리 점프

첫 번째 줄에 통나무 개수 N과 질문의 개수 Q가 주어진다. 다음 N개의 줄에 각 통나무에 x1, x2, y의 세 정수 좌표가 주어진다. 주어진 통나무는 두 점 (x1, y)와 (x2, y)를 잇는 형태이다. (x1 < x2) 모든 좌표는 0이상 109이하이다. 통나무들은 주어진 순서대로 1번부터 번호가 붙어 있다. 서로 다른 두 통나무는 (끝점에서도) 만나지 않는다. 다음 Q개의 줄에 서로 다른 두 통나무의 번호가 주어진다. (1 ≤ N ≤ 100,00

www.acmicpc.net

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
//2019 정올 2차 2번 문제 (중등)
struct s{
    int a,b,pos;
};
bool compare(struct s x,struct s y)
{
    //return x.a<y.a;

    if(x.a<y.a)
        return true;
    return false;
}
int main()
{
    int m,n,i,j,y,r1[1000000]={0,},r2[1000000]={0,},max1,k=0,t=0,z=0,flag=0;
    int g2[1000000];
    struct s log[1000000];
    scanf("%d %d",&m,&n);
    for(i=0;i<m;i++){
        scanf("%d %d %d",&log[i].a,&log[i].b,&y);
        log[i].pos=i+1;
        g2[log[i].pos] = log[i].pos;
    }

    for(i=0;i<n;i++)
        scanf("%d %d",&r1[i],&r2[i]);
    sort(log,log+m,compare);
    while(1)
    {
        max1=log[t].b;
        
        int group = g2[log[t].pos];
        for(i=t;i<m-1;i++)
        {
            if(log[i+1].a<=max1)
            {
                
                g2[log[i+1].pos] = group;
                if(log[i+1].b>max1)
                    max1=log[i+1].b;
            }
            else
                break;
        }
        t=i+1;
        k++;
        z=0;
        if(t>=m)
            break;
    }


    for(t=0;t<n;t++)
    {
        if(g2[r1[t]] == g2[r2[t]]) puts("1");
        else puts("0");
    }
    return 0;
}

 

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

 

JUNGOL | 문자열2 - 자가진단7 > 문제은행

경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP

www.jungol.co.kr

 

 

#include<bits/stdc++.h>
int main()
{
    char s[100];
    int c,l,i,c2;
    gets(s);
    l=strlen(s);
    c=0; c2=0;
    for(i=0; i<l; i++){
        if(s[i]=='c')c=1;
        if(s[i]=='a' && s[i+1]=='b')c2=1;
    }
    if(c==1)printf("yes");
    if(c==0)printf("no");
    if(c2==1)printf("yes");
    if(c2==0)printf("no");
	return 0;
}

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

 

JUNGOL | 문자열2 - 자가진단8 > 문제은행

세 개의 단어를 입력받아 아스키코드(사전) 순으로 가장 먼저 나오는 단어를 출력하는 프로그램을 작성하시오. 각 단어의 길이는 1이상 10 이하이다.

www.jungol.co.kr

 

 

#include<bits/stdc++.h>
using namespace std;
/*
609 : 문자열2 - 자가진단8
세 개의 단어를 입력받아 아스키코드(사전) 순으로 가장 먼저 나오는 단어를 출력하는 프로그램을 작성하시오.
각 단어의 길이는 1이상 10 이하이다.
입력 예
cat dog cow
출력 예
cat
*/

int main()
{
    vector<string> v;
    char a[104][104];
    int i,k=0;
    for(i=0; i<3; i++){
        string st;
        cin >> st;
        v.push_back(st);
    }

    for(i=0; i<v.size(); i++){
        if(v[i] < v[k]){
            k=i;
        }
    }
    cout << v[k];

    sort(v.begin(),v.end());
    cout << v[0];
	return 0;
}

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

 

JUNGOL | 문자열2 - 자가진단9 > 문제은행

5개의 문자열을 입력받아 문자열 크기(아스키코드) 역순으로 정렬하여 출력하는 프로그램을 작성하시오. 주어지는 문자열의 길이는 20자 미만이다.

www.jungol.co.kr

 

#include<bits/stdc++.h>
using namespace std;
/*
610 : 문자열2 - 자가진단9
5개의 문자열을 입력받아 문자열 크기(아스키코드) 역순으로 정렬하여 출력하는 프로그램을 작성하시오.
주어지는 문자열의 길이는 20자 미만이다.
입력 예
Jungol
Korea
information
Monitor
class
출력 예
information
class
Monitor
Korea
Jungol
*/

int main()
{
    int i,j;
    char t[104],a[104][104];
    for(i=0; i<5; i++){
        scanf("%s",a[i]);
    }
    //sort(a,a+5);

    for(i=0; i<5; i++){
        for(j=0; j<5; j++){
            if(strcmp(a[i],a[j])>0){
                strcpy(t,a[i]);
                strcpy(a[i],a[j]);
                strcpy(a[j],t);
            }
        }
    }

    for(i=0; i<5; i++){
        printf("%s\n",a[i]);
    }
	return 0;
}

 

 

#include<bits/stdc++.h>
using namespace std;
/*
610 : 문자열2 - 자가진단9
5개의 문자열을 입력받아 문자열 크기(아스키코드) 역순으로 정렬하여 출력하는 프로그램을 작성하시오.
주어지는 문자열의 길이는 20자 미만이다.
입력 예
Jungol
Korea
information
Monitor
class
출력 예
information
class
Monitor
Korea
Jungol
*/
bool com(string a, string b)
{
    return a>b;
}
int main()
{
    int i,j;
    vector <string> v;
    char t[104],a[104][104];
    for(i=0; i<5; i++){
        cin >> a[i];
        string s(a[i]);
        v.push_back(s);
    }

    sort(v.begin(),v.end(),com);

    for(i=0; i<5; i++){
        cout << v[i] << "\n" ;
    }

	return 0;
}

 

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

 

JUNGOL | 함수3 - 자가진단4 > 문제은행

경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP

www.jungol.co.kr

 

함수3 - 자가진단4

#include<bits/stdc++.h>
using namespace std;
int d[1004];
void f(int n,int k,int pre){
    int i;
    if(k==n){
        for(i=0; i<n; i++){
            printf("%d ",d[i]);
        }
        printf("\n");
        return;
    }
    for(i=pre; i<=6; i++){
        d[k]=i;
        f(n,k+1,i);
    }
}

int main()
{
    int n;
    scanf("%d",&n);
    f(n,0,1);
	return 0;
}

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

 

JUNGOL | 구조체 - 자가진단6 > 문제은행

5명의 이름과 키, 몸무게를 입력받아 이름순으로 정렬하여 출력하고,  몸무게가 무거운 순으로 정렬하여 출력하는 프로그램을 작성하시오.  몸무게는 소수점이하 1자리까지 출력한다.

www.jungol.co.kr

 

 

#include<bits/stdc++.h>
using namespace std;
/*
618 : 구조체 - 자가진단6
5명의 이름과 키, 몸무게를 입력받아 이름순으로 정렬하여 출력하고,
몸무게가 무거운 순으로 정렬하여 출력하는 프로그램을 작성하시오.
몸무게는 소수점이하 1자리까지 출력한다.

입력 예
Lee 150 35.6
Kim 155 28.9
Sin 148 32.7
Jung 160 41.2
Park 165 38.7
출력 예
name
Jung 160 41.2
Kim 155 28.9
Lee 150 35.6
Park 165 38.7
Sin 148 32.7

weight
Jung 160 41.2
Park 165 38.7
Lee 150 35.6
Sin 148 32.7
Kim 155 28.9
*/


struct students
{
    char irum[10];
    int kee;
    float mugae;
};

bool compare(struct students a ,struct students b){
    return a.mugae<b.mugae;
}

bool compare2(struct students a ,struct students b){
    //????
    return strcmp(a.irum, b.irum) < 0;
}

int main()
{

    int i;
    struct students s[5];
    for(i=0; i<5; i++){
        scanf("%s %d %f",s[i].irum,&s[i].kee,&s[i].mugae);
    }
    sort(s,s+5,compare2);
    for(i=0; i<5; i++){
        printf("=name= %s %d %g\n",s[i].irum,s[i].kee,s[i].mugae);
    }

    sort(s,s+5,compare);
    for(i=0; i<5; i++){
        printf("=mugae= %s %d %g\n",s[i].irum,s[i].kee,s[i].mugae);
    }


	return 0;
}

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

 

JUNGOL | 구조체 - 자가진단3 > 문제은행

두 명의 이름과 국어, 영어 점수를 입력받아 과목별 점수의 평균을 구하여 출력하는 프로그램을 작성해 보시오. (이름은 20자 이하이고 평균의 소수점 이하는 버림한다.)

www.jungol.co.kr

 

 

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
/*
615 : 구조체 - 자가진단3
두 명의 이름과 국어, 영어 점수를 입력받아 과목별 점수의 평균을 구하여 출력하는 프로그램을 작성해 보시오.
(이름은 20자 이하이고 평균의 소수점 이하는 버림한다.)
입력 예
Junho 88 100
Seonbin 95 96
출력 예
Junho 88 100
Seonbin 95 96
avg 91 98
*/
typedef struct s{
    int num;
    char name[10],sub[10];
    int score[100];
}Student;

int main()
{
    int m[12],n,i,p=0,q=0;
    //struct s stu[100];
    Student stu[100];
    for(i=1;i<=2;i++)
    {
        scanf("%s %d %d",stu[i].name,&stu[i].score[0],&stu[i].score[1]);
    }
    for(i=1;i<=2;i++)
    {
        printf("%s %d %d\n",stu[i].name,stu[i].score[0],stu[i].score[1]);
    }
    for(i=1;i<=2;i++)
    {
        p+=stu[i].score[0];
        q+=stu[i].score[1];
    }
    printf("avg %d %d",p/2,q/2);
    return 0;
}

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

 

JUNGOL | 구조체 - 자가진단5 > 문제은행

경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP

www.jungol.co.kr

 

 

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
/*
617 : 구조체 - 자가진단5
5명의 이름과 키를 입력받아 키가 가장 작은 사람의 이름과 키를 출력하는 프로그램을 작성하시오. 이름은 20자 이하이다.
입력 예
Park 175
Lee 180
Choo 185
Son 193
Kim 188
출력 예
Park 175
*/
typedef struct s{
    int num;
    char name[10],sub[10];
    int score[100];
}Student;

int main()
{
    int m[12],n=5,i,p=0,q=99990;
    //struct s stu[100];
    Student stu[100];
    //scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%s %d",stu[i].name,&stu[i].num);
    }
    for(i=0;i<n;i++)
    {
        if(q>stu[i].num){
            q=stu[i].num;
            p=i;
        }

    }
    printf("%s %d",stu[p].name,stu[p].num);
    return 0;
}

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

 

JUNGOL | 함수2 - 형성평가2 > 문제은행

두 개의 실수를 입력받아 각각의 제곱근을 구하고 두 제곱근 사이에 존재하는 정수의 개수를 출력하는 프로그램을 작성하시오. 단, 입력받는 두 실수는 양수이며 두 제곱근 사이라는 말은 두 제곱근을 포함한다. 두 수의 제곱근을 구하여 정수로 형변환을 한 후 생각해보자. 두 수 사이의 수들은 모두 포함이 되면 작은 수의 경우 변환하기 전 원래의 제곱근과 같다면 개수에 포함을 시켜야 한다. 큰 수는 원래의 수보다 작거나 같으므로 무조건 포함이 된다.

www.jungol.co.kr

 

#include <bits/stdc++.h>
using namespace std;
/*
함수2 - 형성평가2
두 개의 실수를 입력받아 각각의 제곱근을 구하고 두 제곱근 사이에 존재하는 정수의 개수를 출력하는 프로그램을 작성하시오.
단, 입력받는 두 실수는 양수이며 두 제곱근 사이라는 말은 두 제곱근을 포함한다.
입력 예
12.0 34.789
출력 예
2
*/


int main()
{
    float a,b,c,d;
    int o,n,z=0;
    scanf("%f %f",&a,&b);

    c=sqrt(a);
    d=sqrt(b);

    if(c>d){
        o=(int)floor(c);
        n=(int)ceil(d);
        printf("o = %d n = %d \n", o, n);
        for(int i=n;i<=o;i++){
            z ++;
        }
    }

    if(c<d){
        o=(int)ceil(c);
        n=(int)floor(d);
        printf("o = %d n = %d \n", o, n);
        for(int i=o;i<=n;i++){
            z ++;
        }
    }

    printf("1 : %d\n",z);
    printf("2 : %d",abs(o-n) + 1);


    return 0;
}

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

 

JUNGOL | 함수2 - 형성평가3 > 문제은행

경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP

www.jungol.co.kr

#include <bits/stdc++.h>
using namespace std;
/*
함수2 - 형성평가3
5개의 정수를 입력받아 각 정수의 절대값의 합을 출력하는 프로그램을 작성하시오.
입력 예
35 -20 10 0 55
출력 예
120
*/


int main()
{
    int a,n=0;
    for(int i=0;i<5;i++){
        scanf("%d",&a);
        n= n + abs(a);
    }
    printf("%d",n);
    return 0;
}

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

617 : 구조체 - 자가진단5  (0) 2020.03.11
176 : 함수2 - 형성평가2  (0) 2020.03.09
178 : 함수2 - 형성평가4  (0) 2020.03.09
179 : 함수2 - 형성평가5  (0) 2020.03.09
234 : 함수3 - 형성평가4  (0) 2020.03.01

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

 

JUNGOL | 함수2 - 형성평가4 > 문제은행

경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP

www.jungol.co.kr

#include <bits/stdc++.h>
using namespace std;
/*
함수2 - 형성평가4
정수 n을 입력받아 2n의 값을 출력하는 프로그램을 작성하시오. (1 ≤ n ≤ 20)
입력 예
10
출력 예
1024
*/

int main()
{
    int n,x=1;
    scanf("%d",&n);

    /*
    for(int i=0;i<n;i++){
        x=x*2;
    }*/

    x = pow(2,n);

    printf("%d",x);
    return 0;
}

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

176 : 함수2 - 형성평가2  (0) 2020.03.09
177 : 함수2 - 형성평가3  (0) 2020.03.09
179 : 함수2 - 형성평가5  (0) 2020.03.09
234 : 함수3 - 형성평가4  (0) 2020.03.01
235 : 함수3 - 형성평가5  (0) 2020.03.01

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

 

JUNGOL | 함수2 - 형성평가5 > 문제은행

세 개의 실수를 입력받아 합계와 평균을 구하여 평균을 반올림한 정수를 출력하고, 다음은 입력받은 수를 각각 먼저 반올림한 후 합계와 평균을 구하여 평균을 반올림한 한 결과를 출력하는 프로그램을 작성하시오.

www.jungol.co.kr

 

#include <bits/stdc++.h>
using namespace std;
/*
함수2 - 형성평가5
세 개의 실수를 입력받아 합계와 평균을 구하여 평균을 반올림한 정수를 출력하고,
다음은 입력받은 수를 각각 먼저 반올림한 후 합계와 평균을 구하여 평균을 반올림한 한 결과를 출력하는 프로그램을 작성하시오.
입력 예
153.74 34.59 109.5
출력 예
99
100
*/

int main()
{
    float a[3],b=0;
    int n,o,x=0;
    //합계만
    for(int i=0;i<3;i++){
        scanf("%f",&a[i]);
        b=(b+a[i]);
        x=x+round(a[i]);
    }

    //평균계산
    n=round(b/3);
    printf("x = %d, %d, %f \n",x, x/3, (float)x/3);
    o=round((float)x/3);
    //출력
    printf("%d \n %d",n,o);

    return 0;
}

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

177 : 함수2 - 형성평가3  (0) 2020.03.09
178 : 함수2 - 형성평가4  (0) 2020.03.09
234 : 함수3 - 형성평가4  (0) 2020.03.01
235 : 함수3 - 형성평가5  (0) 2020.03.01
598 : 문자열1 - 자가진단6  (0) 2020.03.01

 

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

 

JUNGOL | 함수3 - 형성평가4 > 문제은행

첫 번째는 1, 두 번째는 2, 세 번째부터는 앞의 두 수의 곱을 100으로 나눈 나머지로 이루어진 수열이 있다. 100 이하의 자연수 N을 입력받아 재귀함수를 이용하여 N번째 값을 출력하는 프로그램을 작성하시오.

www.jungol.co.kr

 

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
//233 : 함수3 - 형성평가4
/*
첫 번째는 1, 두 번째는 2, 세 번째부터는 앞의 두 수의 곱을 100으로 나눈 나머지로 이루어진 수열이 있다.
100 이하의 자연수 N을 입력받아 재귀함수를 이용하여 N번째 값을 출력하는 프로그램을 작성하시오.
*/
int a[100]={0,};
int f(int n)
{
    if(n==1) return 1;
    if(n==2) return 2;
    else
    {
        return (f(n-1)*f(n-2))%100;
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d",f(n));
    return 0;
}
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
//233 : 함수3 - 형성평가4
/*
첫 번째는 1, 두 번째는 2, 세 번째부터는 앞의 두 수의 곱을 100으로 나눈 나머지로 이루어진 수열이 있다.
100 이하의 자연수 N을 입력받아 재귀함수를 이용하여 N번째 값을 출력하는 프로그램을 작성하시오.
*/
int a[1000]={0,};
int main()
{
    int n;
    scanf("%d",&n);
    a[1]=1,a[2]=2;
    for(int i=3;i<=n;i++)
    {
        a[i]=(a[i-1]*a[i-2])%100;
    }
    printf("%d",a[n]);
    return 0;
}

 

 

 

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
//233 : 함수3 - 형성평가4
/*
첫 번째는 1, 두 번째는 2, 세 번째부터는 앞의 두 수의 곱을 100으로 나눈 나머지로 이루어진 수열이 있다.
100 이하의 자연수 N을 입력받아 재귀함수를 이용하여 N번째 값을 출력하는 프로그램을 작성하시오.
*/
int a[1000]={0,};
int f(int n)
{
    if(n==1) return 1;
    if(n==2) return 2;
    else
    {
        if(a[n]!=0) return a[n];
        else{
            a[n]=(f(n-1)*f(n-2))%100;
            return a[n];
        }
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d",f(n));
    return 0;
}

 

 

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

 

JUNGOL | 함수3 - 형성평가5 > 문제은행

경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP

www.jungol.co.kr

 

 

 

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
//233 : 함수3 - 형성평가5
/*
100만 이하의 자연수 N을 입력받아 짝수이면 2로  홀수이면 3으로 나누는
작업을 반복하다가 그 값이 1이 되면 그때까지 나누었던 작업의 횟수를 출력하는 프로그램을 재귀함수로 작성하시오.
*/
int cnt;
int f(int n)
{
    if(n==1) return cnt;
    else
    {
        if(n%2==0)
        {
            cnt++;
            return f(n/2);
        }
        else
        {
            cnt++;
            return f(n/3);
        }
    }
}
int main()
{
    int n;
    scanf("%d",&n);
    printf("%d",f(n));
    return 0;
}

 

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

 

JUNGOL | 문자열1 - 자가진단6 > 문제은행

문자를 입력받아 알파벳 문자인 경우에는 그대로 출력하고 숫자인 경우는 아스키코드값을 출력하는 작업을 반복하다가 기타의 문자가 입력되면 종료하는 프로그램을 작성하시오. * 입출력예에서 진한글씨가 출력

www.jungol.co.kr

 

#include 
#include <bits/stdc++.h>
using namespace std;
/*
문자를 입력받아 알파벳 문자인 경우에는 그대로 출력하고 숫자인 경우는
아스키코드값을 출력하는 작업을 반복하다가 기타의 문자가 입력되면 종료하는 프로그램을 작성하시오.

* 입출력예에서 진한글씨가 출력
입·출력 예
A
A
1
49
@
*/
int main()
{
    char a;
    do{
        scanf(" %c",&a);
        if(a>='A' && a<='Z')
            printf("%c",a);
        else if(a>='0' &&a<='9')
            printf("%d",a);
        else
            return 0;
    }while(1);
}

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

234 : 함수3 - 형성평가4  (0) 2020.03.01
235 : 함수3 - 형성평가5  (0) 2020.03.01
599 : 문자열1 - 자가진단7  (0) 2020.03.01
582 : 함수2 - 자가진단4  (0) 2020.03.01
83 : 함수2 - 자가진단5  (0) 2020.03.01

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

 

JUNGOL | 문자열1 - 자가진단7 > 문제은행

경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP

www.jungol.co.kr

 

 

 

#include 
#include <bits/stdc++.h>
using namespace std;
/*
문자열을 입력받아 알파벳 문자만 모두 대문자로 출력하는 프로그램을 작성하시오.
문자열의 길이는 100이하이다.
입력 예
1988-Seoul-Olympic!!!
출력 예
SEOULOLYMPIC
*/
int main()
{
    char a[100]={0,};
    int i;
    scanf("%s",a);
    for(i=1;a[i]!=NULL;i++)
    {
        if(a[i]>='A' && a[i]<='Z')
            printf("%c",a[i]);
        else if(a[i]>='a' && a[i]<='z')
            printf("%c",a[i]-('a'-'A'));
    }
}

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

235 : 함수3 - 형성평가5  (0) 2020.03.01
598 : 문자열1 - 자가진단6  (0) 2020.03.01
582 : 함수2 - 자가진단4  (0) 2020.03.01
83 : 함수2 - 자가진단5  (0) 2020.03.01
584 : 함수2 - 자가진단6  (0) 2020.03.01

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

 

1182번: 부분수열의 합

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

www.acmicpc.net

 

 

#include 
#include <bits/stdc++.h>
using namespace std;
/*
부분수열의 합
*/
int a[10000]={0,};
int main()
{
    int n,s,i,k,sum=0,cnt=0;
    scanf("%d %d",&n,&s);
    for(i=1;i<=n;i++)
        scanf("%d",&a[i]);
    for(i=1;i<(1<<n);i++){
        sum=0;
        for(k=0;k<n;k++)
        {
            if(i&(1<<k))
            {
                sum+=a[k+1];
            }
        }
        if(sum==s)
            cnt++;
    }
    printf("%d",cnt);
    return 0;
}

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

 

1654번: 랜선 자르기

첫째 줄에는 오영식이 이미 가지고 있는 랜선의 개수 K, 그리고 필요한 랜선의 개수 N이 입력된다. K는 1이상 10,000이하의 정수이고, N은 1이상 1,000,000이하의 정수이다. 그리고 항상 K ≦ N 이다. 그 후 K줄에 걸쳐 이미 가지고 있는 각 랜선의 길이가 센티미터 단위의 정수로 입력된다. 랜선의 길이는 231-1보다 작거나 같은 자연수이다.

www.acmicpc.net

 

 

#include<stdio.h>

long long k;
long long Lan[20000];   //원소는 초기화 됨. 

long long div(long long len)   //len로 자르기. 
{
   long long sum = 0;
   
   for(int i=0; i<k; i++)
   {
      sum += (Lan[i]/len);
   }
   
   return sum;
}

int main(void)
{   
   long long n;
   long long max = 0;
   scanf("%lld %lld", &k, &n);
   
   for(int i=0; i<k; i++)
   {
      scanf("%lld", &Lan[i]);
      
      if(max<Lan[i])
      {
         max = Lan[i];   //최대 원소값 찾기 
      }
   }
   
   long long s = 1;
   long long e = max;   //mid의 범위를 1~최대 원소값까지로 고정. 
   long long mid;
   long long res; 
   long long res2 = -1; 

   
   while(s<=e)
   {
      mid = (s+e)/2;
      
      res = div(mid);   //res는 조각의 개수. 
      //
      if(res >= n)
      {
        if(res2 < mid) {
          res2 = mid;
        }
         s=mid+1;
      }
      
      else
      {
         e=mid-1;
      }
   }
   
   printf("%lld\n", res2);
   
   return 0;
}

 

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

 

JUNGOL | 함수2 - 자가진단4 > 문제은행

원의 넓이를 입력받아 반지름의 길이를 소수 둘째자리까지 출력하는 프로그램을 작성하시오. 원의 넓이 = 반지름 * 반지름 * 3.14 식을 이용하시오. 원의 넓이 / 3.14 의 제곱근을 구하면 된다.

www.jungol.co.kr

 

 

#include <bits/stdc++.h>
using namespace std;
/*
함수2 - 자가진단4
원의 넓이를 입력받아 반지름의 길이를 소수 둘째자리까지 출력하는 프로그램을 작성하시오.
원의 넓이 = 반지름 * 반지름 * 3.14 식을 이용하시오.
*/

int main()
{

    float a=3.14;
    float b;
    float n;
    float o;
    scanf("%f",&b);

    n = b/a;
    //o = sqrt(b/a);
    o = sqrt(n);

    printf("%.2f", o);
    return 0;
}

 

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

 

JUNGOL | 함수2 - 자가진단5 > 문제은행

경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP

www.jungol.co.kr

 

 

#include <bits/stdc++.h>
using namespace std;
/*
583 : 함수2 - 자가진단5
세 개의 실수를 입력받아
가장 큰 수를 올림한 정수를 출력하고
가장 작은 수를 내림한 정수를 출력한 후
남은 수를 반올림한 정수를 출력하는 프로그램을 작성하시오.
입력되는 실수는 -1000이상 1000이하이다.
입력 예
3.45 51.48 -100.1
출력 예
52 -101 3
*/
bool comp(int a,int b){
     return a>b;
}

int main()
{
    float a[3];
    for(int i= 0;i<3;i++){
        scanf("%f",&a[i]);
    }
    float max,mid,min;

    sort(a, a+3,comp);

    max=a[0];
    mid=a[1];
    min=a[2];

    printf("%.2f %.2f %.2f",ceil(max),round(mid),floor(min));

    return 0;
}

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

599 : 문자열1 - 자가진단7  (0) 2020.03.01
582 : 함수2 - 자가진단4  (0) 2020.03.01
584 : 함수2 - 자가진단6  (0) 2020.03.01
586 : 함수2 - 자가진단8  (0) 2020.03.01
233 : 함수3 - 형성평가3  (0) 2020.03.01

 

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

 

JUNGOL | 함수2 - 자가진단6 > 문제은행

경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP

www.jungol.co.kr

 

#include <bits/stdc++.h>
using namespace std;
/*
함수2 - 자가진단6
main() 함수 내에는 숫자를 사용하지 말고 1, 2, 3 세 개의 숫자를 조합하여 가능한 한 모든 합을 출력하는 프로그램을 작성하시오.
출력예와 같이 출력하시오.
출력 예
1 + 1 = 2
1 + 2 = 3
1 + 3 = 4
2 + 1 = 3
2 + 2 = 4
2 + 3 = 5
3 + 1 = 4
3 + 2 = 5
3 + 3 = 6
*/

#define START 6
#define END   9

int main()
{
    for(int i=START;i<=END;i++){
        for(int j=START;j<=END;j++){
            printf("%d + %d = %d\n",i,j,i+j);
        }
        printf("\n");
    }
    return 0;
}

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

582 : 함수2 - 자가진단4  (0) 2020.03.01
83 : 함수2 - 자가진단5  (0) 2020.03.01
586 : 함수2 - 자가진단8  (0) 2020.03.01
233 : 함수3 - 형성평가3  (0) 2020.03.01
234 : 함수3 - 형성평가4  (0) 2020.03.01

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

 

JUNGOL | 함수2 - 자가진단8 > 문제은행

경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP

www.jungol.co.kr

 

 

 

#include <bits/stdc++.h> 
using namespace std; 
/* 
함수2 - 자가진단8 
정수 두 개를 입력받고  계산식을 매크로 함수로 작성하여 두 수의 차를 제곱한 값과 합을 세제곱한 값을 각각 출력하는 프로그램을 작성하시오. 
(거듭제곱은 '^'로 표시하기로 한다.) 
입력 예 
5 10 
출력 예 
(5 - 10) ^ 2 = 25 
(5 + 10) ^ 3 = 3375 
(5 + 10) ^ 60 = ???? 
*/ 

int main() 
{ 
    int a,b,c; 
    scanf("%d %d",&a,&b); 
    int n = (a-b)*(a-b); 
    c = a+b; 
    int o = c*c*c; 
    int res = 1; 
    for(int i=0;i<3;i++){ 
        res = res * c; 
    } 
    printf("(%d - %d) ^ 2 = %d \n (%d + %d) ^ 3 = %d\n",a,b,n,a,b,o); 
    printf("res = %d\n", res); 

    printf("pow : (%d - %d) ^ 2 = %.0f \n (%d + %d) ^ 3 = %.0f\n", a,b,ceil(pow((a-b),2)),a,b,ceil(pow((a+b),3))); 
    //printf("pow : %f  ===  %f\n", pow((a-b),2), pow((a+b),3)); 

    return 0; 
}

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

83 : 함수2 - 자가진단5  (0) 2020.03.01
584 : 함수2 - 자가진단6  (0) 2020.03.01
233 : 함수3 - 형성평가3  (0) 2020.03.01
234 : 함수3 - 형성평가4  (0) 2020.03.01
589 : 함수3 - 자가진단3  (0) 2020.02.16

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

 

JUNGOL | 함수3 - 형성평가3 > 문제은행

경기도 안양시 동안구 평촌대로 109 협성골드프라자 601호 TEL : 031-360-4144 FAX : 031-388-0996 E-mail : hancomc@hotmail.com, comkiwer@naver.com Copyrightⓒ 2010-2019 jungol. All right reserved. TOP

www.jungol.co.kr

 

 

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

int check_sum(int n, int m){
    //v의 총합 이 M인지 확인
    int x=0;
    for(int i=0; i<n; i++){
        x=x+v[i];
    }
    if(x==m)return 1;
    else return 0;
}

void f(int n, int m)
{
    int i;
    //printf("=== %d \n", v.size());
    if(v.size()==n){
        if(check_sum(n,m)==1){
            //printf("===0");
            for(i=0; i<n; i++){
                printf("%d ",v[i]);
            }
            printf("\n");
            return;
        }
        else return;
    }

    for(i=1; i<=6; i++){
        v.push_back(i);
        f(n,m);
        v.pop_back();
    }
}


int main()
{
    int n,m;
    //printf("==== 0");
    scanf("%d %d",&n,&m);
    //printf("==== 1")
    f(n,m);
	return 0;
}

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

584 : 함수2 - 자가진단6  (0) 2020.03.01
586 : 함수2 - 자가진단8  (0) 2020.03.01
234 : 함수3 - 형성평가4  (0) 2020.03.01
589 : 함수3 - 자가진단3  (0) 2020.02.16
590 : 함수3 - 자가진단4  (0) 2020.02.16

+ Recent posts