AI 공부 도전기

[Baekjoon] C++ 3단계 for문 (2739, 10950, 8393, 15552, 2741, 2742, 11021, 11022, 2438, 2439, 10871)

 

 

     

 

https://www.acmicpc.net/step/3

 

for문 단계

1부터 N까지의 합을 구하는 문제. 물론 반복문 없이 풀 수도 있습니다.

www.acmicpc.net

 

2739 구구단

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

 

2739번: 구구단

N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.

www.acmicpc.net

방법 1

#include <iostream>
using namespace std;
int main() {
	int n;
	cin >> n;	
	for (int i = 1; i < 10; i++) 
		cout << n << " * " << i << " = " << n*i << endl;
	return 0;
}

 

방법 2

#include <stdio.h>
int main() {
    int N;
    scanf("%d", &N);
    for (int i = 1; i < 10; i++) {
        printf("%d * %d = %d\n", N, i, N * i);
    }
    return 0;
}

 

 

 

 

 

10950 A+B-3

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

 

10950번: A+B - 3

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

방법 1 

#include <iostream>
using namespace std;
int main() {
	int T, A, B;
	cin >> T;	
	for (int i = 0; i < T; i++) {
		cin >> A >> B;
		cout << A + B << endl;
	}		
	return 0;
}

 

방법 2

#include <stdio.h>
int main() {
    int T, A, B;
    scanf("%d", &T);
    for (int i = 0; i < T; i++) {
        scanf("%d %d", &A, &B);
        printf("%d\n", A+B);
    }
    return 0;
}

 

8393 합

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

 

8393번: 합

n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.

www.acmicpc.net

 

방법 1

#include <iostream>
using namespace std;
int main() {
	int N, e=0;
	cin >> N;		
	for (int i = 1; i <= N; i++)
		e += i;
	cout << e << endl;
	return 0;
}

 

방법 2 수식

#include <iostream>
using namespace std;
int main() {
	int N;
	cin >> N;		
	cout << N*(N+1)/2 << endl;
	return 0;
}

 

방법 3 

#include <stdio.h>
int main() {
    int n;
    scanf("%d", &n);
    printf("%d", n*(n+1)/2);    
    return 0;
}

 

15552 빠른 A+B

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

 

15552번: 빠른 A+B

첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.

www.acmicpc.net

 

방법 1

#include <iostream>
using namespace std;
int main() {
	cin.tie(NULL);
	ios::sync_with_stdio(false);
	int N, A, B;	
	cin >> N;
	for (int i = 0; i < N; i++) {
		cin >> A >> B;
		cout << A + B << "\n";
	}
	return 0;
}

 

C 혹은 C++에서 scanf, printf 사용 : 빠름

cin, cout은 상대적으로 느림

 

cin.tie(NULL);

cin으로 데이터 읽을 때 출력 버퍼를 비우지 않고 입력을 받음

 

ios::sync_with_stdio(false);

=> C와 C++의 버퍼 분리

 

endl은 개행뿐 아니라 버퍼를 비우는 작업도 함 - 느림

 

https://st-lab.tistory.com/232

 

[백준] 15552번 : 빠른 A+B - [C++]

www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmi..

st-lab.tistory.com

 

2741 N 찍기

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

 

2741번: N 찍기

자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

방법 1 

#include <iostream>
using namespace std;
int main() {
	int N;	
	cin >> N;
	for (int i = 1; i <= N; i++)
		cout << i << "\n"; // endl 방법은 시간 초과
}

 

endl은 개행뿐 아니라 버퍼를 비우는 작업도 함 - 느림 

 

방법 2

#include <iostream>
#include <string>
using namespace std;
int main() {
	int N;	
	cin >> N;
	string s = "";
	for (int i = 1; i <= N; i++)
		s += to_string(i) + "\n";
	cout << s;
}

 

방법 3

#include <cstdio> // 혹은 #include <stdio.h>
int main(){
	int N;	
	scanf("%d", &N);	
	for(int i=0; i<N; i++)
		printf("%d\n", i+1);	
	return 0;
}

 

2742 기찍 N

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

 

2742번: 기찍 N

자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

방법 1

#include <iostream>
using namespace std;
int main() {
	int N;	
	cin >> N;
	for (int i = N; i > 0; i--)
		cout << i << "\n";
}

 

방법 2 - 방법 1에 비해 많은 메모리, 짧은 시간

#include <iostream>
#include <string>
using namespace std;
int main() {
	int N;
	cin >> N;
	string s = "";
	for (int i = N; i >0; i--)
		s += to_string(i) + "\n";
	cout << s;
}

 

방법 3

#include <stdio.h>
int main(){
	int N;	
	scanf("%d", &N);	
	for(int i=N; i>0; i--)
		printf("%d\n", i);	
	return 0;
}

 

11021 A+B-7

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

 

11021번: A+B - 7

각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.

www.acmicpc.net

 

 

방법 1

#include <iostream>
using namespace std;
int main() {
	int T, A, B;
	cin >> T;	
	for (int i = 0; i < T; i++) {
		cin >> A >> B;
		cout << "Case #" << i + 1 << ": " << A + B << "\n";
	}		
}

 

방법 2

#include <stdio.h>
int main(){
	int T,A,B;
	scanf("%d",&T);
	for(int i=1; i<=T; i++){
		scanf("%d %d",&A,&B);
		printf("Case #%d: %d\n",i,A+B);
	}
}

 

11022 A+B-8

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

 

11022번: A+B - 8

각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다.

www.acmicpc.net

 

방법 1

#include <iostream>
using namespace std;
int main() {
	int T, A, B;
	cin >> T;	
	for (int i = 0; i < T; i++) {
		cin >> A >> B;
		cout << "Case #" << i + 1 << ": " << A << " + " << B << " = " << A + B << "\n";
	}		
}

 

방법 2

#include <stdio.h>
int main(){
	int T,A,B;
	scanf("%d",&T);
	for(int i=1; i<=T; i++){
		scanf("%d %d",&A,&B);
		printf("Case #%d: %d + %d = %d\n",i,A,B,A+B);
	}
}

 

2438 별 찍기 - 1

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

 

2438번: 별 찍기 - 1

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

www.acmicpc.net

 

방법 1

#include <iostream>
using namespace std;
int main() {
	int N;
	cin >> N;	
	for (int i = 0; i < N; i++) {
		for (int j = 0; j <= i; j++)
			cout << "*";
		cout << "\n";
	}
}

 

방법 2

#include <stdio.h>
int main(){
	int n;
	scanf("%d",&n);
	for(int i=0; i<n; i++){
		for(int j=0; j<=i; j++)
			printf("*");
		printf("\n");
	}
}

 

방법 3

 

 

 

2439 별 찍기 - 2

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

 

2439번: 별 찍기 - 2

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

www.acmicpc.net

 

 

방법 1

#include <iostream>
using namespace std;
int main() {
	int N;
	cin >> N;	
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N; j++) {
			if ((N-1 - j) > i)
				cout << " ";
			else
				cout << "*";
		}
		cout << "\n";
	}
}

 

방법 2

#include <iostream>
using namespace std;
int main() {
	int N;
	cin >> N;	
	for (int i = 1; i <= N; i++) {
		for (int j = 0; j < N - i; j++)			
				cout << " ";
		for (int j = 0; j < i; j++)			
				cout << "*";
		cout << "\n";
	}
}

 

#include <iostream>
using namespace std;
int main() {
	int N;
	cin >> N;	
	for (int i = 0; i < N; i++) {
		for (int j = 0; j < N - (i+1); j++)			
				cout << " ";
		for (int j = 0; j < (i+1); j++)			
				cout << "*";
		cout << "\n";
	}
}

 

10871 X보다 작은 수

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

 

10871번: X보다 작은 수

첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000) 둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

www.acmicpc.net

 

방법 1

#include <iostream>
using namespace std;
int main() {
	int N, X, A;	
	cin >> N >> X;
	for (int i = 0; i < N; i++) {
		cin >> A;
		if (A < X)
			cout << A << " ";
	}
	return 0;
}

 

방법 2

#include <iostream>
using namespace std;
int main() {
	int N, X;	
	cin >> N >> X;

	int A[N];

	for (int i = 0; i < N; i++) {
		cin >> A[i];
		if (A[i] < X)
			cout << A[i] << " ";
	}
	return 0;
}

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading