반응형

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

 

2693번: N번째 큰 수

첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 배열 A의 원소 10개가 공백으로 구분되어 주어진다. 이 원소는 1보다 크거나 같고, 1,000

www.acmicpc.net

문제

배열 A가 주어졌을 때, N번째 큰 값을 출력하는 프로그램을 작성하시오.

배열 A의 크기는 항상 10이고, 자연수만 가지고 있다. N은 항상 3이다.

입력

첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 배열 A의 원소 10개가 공백으로 구분되어 주어진다. 이 원소는 1보다 크거나 같고, 1,000보다 작거나 같은 자연수이다.

출력

각 테스트 케이스에 대해 한 줄에 하나씩 배열 A에서 3번째 큰 값을 출력한다.


풀이

입력받은 배열을 내림차순으로 정렬해주고 3번째 값을 출력한다

 

파이썬으로 풀면 매매애ㅐㅐㅐㅐㅐㅐㅐ우 쉽게 풀 수 있는 문제였겠지만,,, 아직 배열을 받는게 어색해서 많은 시간 까지는 아니어두 조금 시간이 걸린 문제... 빨리 C++에 익숙해지면 좋겠다

코드

#include<iostream>
#include<vector>
using namespace std;

int main()
{
	int T;
	cin >> T;

	//num을 입력받아서 배열에 넣기
	for (int tc = 0; tc < T; tc++)
	{	
		vector<int>arr;
		for (int i = 0; i < 10; i++)
		{
			int num;
			cin >> num;
			arr.push_back(num);
		}
		//내림차순 정렬
		//임시로 숫자를 넣을 변수
		int temp;
		for (int i = 0; i < 10; i++)
		{
			for (int j = i + 1; j < 10; j++)
			{
				if (arr[i] < arr[j])
				{
					temp = arr[i];
					arr[i] = arr[j];
					arr[j] = temp;
				}
			}

		}
		//count는 0부터 시작하기 때문에 3번로 큰 수의 인덱스는 2
		cout << arr[2] << '\n';
	}

}

 

반응형

'study > 백준' 카테고리의 다른 글

[백준] 2506. 점수계산 : C++  (0) 2022.02.10
[백준] 2501. 약수 구하기 : C++  (0) 2022.02.09
[백준] 1026. 보물 : C++  (0) 2022.02.05
[백준] 4101. 크냐? : C++  (0) 2022.02.04
[백준] 10569. 다면체 : C++  (0) 2022.02.02
반응형

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

 

1026번: 보물

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거

www.acmicpc.net

문제

옛날 옛적에 수학이 항상 큰 골칫거리였던 나라가 있었다. 이 나라의 국왕 김지민은 다음과 같은 문제를 내고 큰 상금을 걸었다.

길이가 N인 정수 배열 A와 B가 있다. 다음과 같이 함수 S를 정의하자.

S = A[0] × B[0] + ... + A[N-1] × B[N-1]

S의 값을 가장 작게 만들기 위해 A의 수를 재배열하자. 단, B에 있는 수는 재배열하면 안 된다.

S의 최솟값을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 N이 주어진다. 둘째 줄에는 A에 있는 N개의 수가 순서대로 주어지고, 셋째 줄에는 B에 있는 수가 순서대로 주어진다. N은 50보다 작거나 같은 자연수이고, A와 B의 각 원소는 100보다 작거나 같은 음이 아닌 정수이다.

출력

첫째 줄에 S의 최솟값을 출력한다.


풀이

A와 B를 각각 오름차순/내림차순으로 정렬 한 후 각 인덱스 값을 계산해주었다

 

단, B에 있는 수는 재배열하면 안 된다.

는 조건이 붙어있으므로 따지고들면 틀린 코드이다...

코드

#include<iostream>
#include<vector>
using namespace std;

int main()
{
	int N, temp;
	vector<int>arrA;
	vector<int>arrB;

	cin >> N;

	// A 입력받기
	for (int i = 0; i < N; i++)
	{
		int num;
		cin >> num;
		arrA.push_back(num);
	}
	// B 입력받기
	for (int i = 0; i < N; i++)
	{
		int num;
		cin >> num;
		arrB.push_back(num);
	}
	// A, B를 오름차순, 내림차순으로 정렬
	for (int i = 0; i < N; i++) {
		for (int j = i+1; j < N; j++) {
			if (arrA[i] > arrA[j]) {
				temp = arrA[i];
				arrA[i] = arrA[j];
				arrA[j] = temp;
			}
			if (arrB[i] < arrB[j]) {
				temp = arrB[i];
				arrB[i] = arrB[j];
				arrB[j] = temp;
			}
		}
	}
	// ans 에 값을 하나씩 더함
	int ans = 0;
	for (int i = 0; i < N; i++)
	{
		ans += arrA[i] * arrB[i];
	}
	cout << ans;
}
반응형

'study > 백준' 카테고리의 다른 글

[백준] 2501. 약수 구하기 : C++  (0) 2022.02.09
[백준] 2693. N번째 큰 수 : C++  (0) 2022.02.05
[백준] 4101. 크냐? : C++  (0) 2022.02.04
[백준] 10569. 다면체 : C++  (0) 2022.02.02
[백준] 2446. 별 찍기 - 9 : C++  (0) 2022.01.31
반응형

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

 

4101번: 크냐?

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 두 정수가 주어진다. 두 수는 백만보다 작거나 같은 양의 정수이다. 입력의 마지막 줄에는 0이

www.acmicpc.net

문제

두 양의 정수가 주어졌을 때, 첫 번째 수가 두 번째 수보다 큰지 구하는 프로그램을 작성하시오.

입력

입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 두 정수가 주어진다. 두 수는 백만보다 작거나 같은 양의 정수이다. 입력의 마지막 줄에는 0이 두 개 주어진다.

출력

각 테스트 케이스마다, 첫 번째 수가 두 번째 수보다 크면 Yes를, 아니면 No를 한 줄에 하나씩 출력한다.

 


풀이

코드 흐름 자체는 어렵지 않지만 왜인지 Yes / No가 계속 int 형식으로 출력돼서 고민을 하게 되었던 문제

C++ 에서는 작은 따옴표와 큰 따옴표를 구분해서 사용해야 했다

하나의 문자를 식별할 때 작은 따옴표

문자열을 식별할 때는 큰 따옴표

코드

#include<iostream>
using namespace std;

int main()
{
	int A, B;
	while (true)
	{
		cin >> A >> B;
		if (A == 0 && B == 0) break;
		if (A > B) cout << "Yes";
		else  cout << "No";
		cout << '\n';
	}
}

 

반응형

'study > 백준' 카테고리의 다른 글

[백준] 2693. N번째 큰 수 : C++  (0) 2022.02.05
[백준] 1026. 보물 : C++  (0) 2022.02.05
[백준] 10569. 다면체 : C++  (0) 2022.02.02
[백준] 2446. 별 찍기 - 9 : C++  (0) 2022.01.31
[백준] 2445. 별 찍기 - 8 : C++  (0) 2022.01.30
반응형

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

 

10569번: 다면체

수학자가 구를 깎아서 볼록다면체를 만들었다. 이 수학자는 임의의 볼록다면체에 대해 (꼭짓점의 수) - (모서리의 수) + (면의 수) = 2가 성립한다는 것을 알고 있다. 그래서 구를 깎는 게 취미인

www.acmicpc.net

문제

수학자가 구를 깎아서 볼록다면체를 만들었다. 이 수학자는 임의의 볼록다면체에 대해 (꼭짓점의 수) - (모서리의 수) + (면의 수) = 2가 성립한다는 것을 알고 있다. 그래서 구를 깎는 게 취미인 이 사람은 꼭짓점, 모서리와 면의 수를 기록할 때 꼭짓점과 모서리의 수만 세고 면의 수는 세지 않는다.

입력

첫 번째 줄에 1 이상 100 이하의 자연수 T가 주어진다.

다음 T개의 줄에 4 이상 100 이하의 자연수 V와 E가 공백을 사이에 두고 주어진다. V와 E는 각각 꼭짓점의 개수와 모서리의 개수이다.

출력

각 V와 E에 대해 볼록다면체의 면의 수를 한 줄에 하나씩 출력한다.


풀이

(꼭짓점의 수) - (모서리의 수) + (면의수) = 2 라면

(면의 수) = 2 - V(꼭짓점의 수) + E(면의 수) 이다 

코드

#include<iostream>
using namespace std;

int main()
{
	int T;
	cin >> T;
	for (int i = 0; i < T; i++)
	{
		int V, E;
		cin >> V >> E;
		cout << (2 - V + E) << '\n';
	}
}
반응형

'study > 백준' 카테고리의 다른 글

[백준] 1026. 보물 : C++  (0) 2022.02.05
[백준] 4101. 크냐? : C++  (0) 2022.02.04
[백준] 2446. 별 찍기 - 9 : C++  (0) 2022.01.31
[백준] 2445. 별 찍기 - 8 : C++  (0) 2022.01.30
[백준] 1934. 최소공배수 : python  (0) 2022.01.30
반응형

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

 

2446번: 별 찍기 - 9

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.


풀이

처음으로 본 코테? 필기 테스트 문제로도 비슷한 문제가 나왔었는데

당시 C++언어를 하나도 몰라서 못풀었던 문제...

그때도 python 으로 풀라고 했으면 풀 수는 있었는데...

2022.01.26 - [study/백준] - [백준] 2444. 별 찍기 - 7 : C++

이 문제를 반대로 푼다고 생각하면 쉽다

for 문에서 i 가 0이 아니라 1부터 시작한다고 생각하면 빠르게 풀 수 있는 문제

 

[백준] 2444. 별 찍기 - 7 : C++

https://www.acmicpc.net/problem/2444 2444번: 별 찍기 - 7 첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다. www.acmicpc.net 문제 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. 입력 첫째 줄에 N(..

w-world.tistory.com

코드

#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 << ' ';
		}
		for (int j = 0; j < (N - i) * 2 - 1; j++)
		{
			cout << '*';
		}
		cout << '\n';
	}
	for (int i = 1; i < N; i++)
	{
		for (int j = 0; j < (N - 1) - i; j++)
		{
			cout << ' ';
		}
		for (int j = 0; j < i * 2 + 1; j++)
		{
			cout << '*';
		}
		cout << '\n';
	}
}

 

반응형

'study > 백준' 카테고리의 다른 글

[백준] 4101. 크냐? : C++  (0) 2022.02.04
[백준] 10569. 다면체 : C++  (0) 2022.02.02
[백준] 2445. 별 찍기 - 8 : C++  (0) 2022.01.30
[백준] 1934. 최소공배수 : python  (0) 2022.01.30
[백준] 2444. 별 찍기 - 7 : C++  (0) 2022.01.26
반응형

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

 

2445번: 별 찍기 - 8

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

 


풀이

위와 아래 부분을 나눠서 코드를 작성하였다

코드

#include<iostream>
using namespace std;
// 별 찍기 - 8

int main()
{
	int N;
	cin >> N;

	for (int i = 0; i < N-1; i++)
	{
		for (int j = 0; j < i+1; j++)
		{
			cout << '*';
		}
		for (int j = 0; j < N * 2 - ((i+1) * 2);j++)
		{
			cout << ' ';
		}
		for (int j = 0; j < i+1; j++)
		{
			cout << '*';
		}
		cout << '\n';
	}
	for (int i = 0; i < N; i++)
	{
		for (int j = 0; j < N-i; j++)
		{
			cout << '*';
		}
		for (int j = 0; j < i * 2; j++)
		{
			cout << ' ';
		}
		for (int j = 0;j < N-i; j++)
		{
			cout << '*';
		}
		cout << '\n';
	}
}
반응형

'study > 백준' 카테고리의 다른 글

[백준] 10569. 다면체 : C++  (0) 2022.02.02
[백준] 2446. 별 찍기 - 9 : C++  (0) 2022.01.31
[백준] 1934. 최소공배수 : python  (0) 2022.01.30
[백준] 2444. 별 찍기 - 7 : C++  (0) 2022.01.26
[백준] 2443. 별 찍기 - 6 : C++  (0) 2022.01.25
반응형

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

 

1934번: 최소공배수

두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있

www.acmicpc.net

문제

두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있으며, 최소 공배수는 30이다.

두 자연수 A와 B가 주어졌을 때, A와 B의 최소공배수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 둘째 줄부터 T개의 줄에 걸쳐서 A와 B가 주어진다. (1 ≤ A, B ≤ 45,000)

출력

첫째 줄부터 T개의 줄에 A와 B의 최소공배수를 입력받은 순서대로 한 줄에 하나씩 출력한다.


풀이

유클리드 호제법을 사용해서 풀이한다

*유클리드 호제법*

최소공배수를 구하는 알고리즘

 

유클리드 호제법

두 양의 정수 a,b\ (a>b)a,b (a>b)에 대하여 a=bq+r\,\left(0\le r<b\right)a=bq+r(0≤r<b)[2]라 하면, a,ba,b의 최대공약수는 b,rb,r의 최대공약수와 같다. 즉,\gcd\left(a,\ b\right)=\gcd\left(b,\ r\right)gcd(a, b)=gcd(b, r)r=0r=0이라면, a,ba,b의 최대공약수는 bb가 된다.

인류 최초의 알고리즘이라고 한다 (신기)

최소공배수를 구해준 후 A, B 를 최소공배수로 나눈 수를 곱해준다

코드

#1934 최소 공배수
import sys

T = int(input())

for tc in range(T):
    A, B = map(int, sys.stdin.readline().split())
    a = A
    b = B
    while True:
        r = a % b
        if r == 0:
            break
        a = b
        b = r
    # 최소공배수 = b
    print((A//b)*(B//b)*b)

 

반응형

'study > 백준' 카테고리의 다른 글

[백준] 2446. 별 찍기 - 9 : C++  (0) 2022.01.31
[백준] 2445. 별 찍기 - 8 : C++  (0) 2022.01.30
[백준] 2444. 별 찍기 - 7 : C++  (0) 2022.01.26
[백준] 2443. 별 찍기 - 6 : C++  (0) 2022.01.25
[백준] 2442. 별 찍기 - 5 : C++  (0) 2022.01.25
반응형

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

 

2444번: 별 찍기 - 7

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-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-1)-i; j++)
		{
			cout << ' ';
		}
		for (int j = 0; j < i * 2 +1;j++)
		{
			cout << '*';
		}
		cout << '\n';
	}
	for (int i = 0; i < N-1; i++)
	{
		for (int j = 0; j < i+1; j++)
		{
			cout << ' ';
		}
		for (int j = 0; j < (N-1-i)*2-1 ;j++)
		{
			cout << '*';
		}
		cout << '\n';
	}
}
반응형

'study > 백준' 카테고리의 다른 글

[백준] 2445. 별 찍기 - 8 : C++  (0) 2022.01.30
[백준] 1934. 최소공배수 : python  (0) 2022.01.30
[백준] 2443. 별 찍기 - 6 : C++  (0) 2022.01.25
[백준] 2442. 별 찍기 - 5 : C++  (0) 2022.01.25
[백준] 9085. 더하기 : C++  (0) 2022.01.23
반응형

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

 

2443번: 별 찍기 - 6

첫째 줄에는 별 2×N-1개, 둘째 줄에는 별 2×N-3개, ..., N번째 줄에는 별 1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다.

www.acmicpc.net

문제

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

별은 가운데를 기준으로 대칭이어야 한다.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.


코드

#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 << ' ';
		}
		for (int j = 0 ; j < (N-i)*2-1; j++)
		{
			cout << '*';
		}
		cout << '\n';
	}
}
반응형

'study > 백준' 카테고리의 다른 글

[백준] 1934. 최소공배수 : python  (0) 2022.01.30
[백준] 2444. 별 찍기 - 7 : C++  (0) 2022.01.26
[백준] 2442. 별 찍기 - 5 : C++  (0) 2022.01.25
[백준] 9085. 더하기 : C++  (0) 2022.01.23
[백준] 5565. 영수증 : C++  (0) 2022.01.21
반응형

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

 

2442번: 별 찍기 - 5

첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다.

www.acmicpc.net

문제

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

별은 가운데를 기준으로 대칭이어야 한다.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 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*2+1; j++)
		{
			cout << "*";
		}
		cout << "\n";
	}
}
반응형

'study > 백준' 카테고리의 다른 글

[백준] 2444. 별 찍기 - 7 : C++  (0) 2022.01.26
[백준] 2443. 별 찍기 - 6 : C++  (0) 2022.01.25
[백준] 9085. 더하기 : C++  (0) 2022.01.23
[백준] 5565. 영수증 : C++  (0) 2022.01.21
[백준] 2441. 별 찍기 - 4 : C++  (0) 2022.01.19

+ Recent posts