반응형

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

 

11098번: 첼시를 도와줘!

구단이 성적을 내지 못한다면 답은 새 선수 영입뿐이다. 이것은 오늘날 유럽 리그에서 가장 흔한 전략이고, 노르웨이의 로젠버그 팀은 이러한 전략이 성공한 대표적 예시다. 그들은 많은 스카

www.acmicpc.net

문제

구단이 성적을 내지 못한다면 답은 새 선수 영입뿐이다. 이것은 오늘날 유럽 리그에서 가장 흔한 전략이고, 노르웨이의 로젠버그 팀은 이러한 전략이 성공한 대표적 예시다. 그들은 많은 스카우터들을 지구 곳곳에 파견해 가능성 있는 루키를 찾는다.

현재 첼시는 프리미어 리그에서 헤매고 있고, 결국 새로운 선수를 사기로 결정했다. 하지만 그들은 스카우터를 기다리기 지쳤고, 훨씬 더 효율적인 전략을 개발해냈다. "만약 무언가 팔리고 있다면, 그것에는 합당한 이유가 있다"는 배룸의 명언이 바로 그것이다. 축구에서 이 말은 곧 가장 비싼 선수가 가장 좋은 선수라는 이야기가 된다. 

이에 따라 새로운 선수를 찾는 방법은 단순히 구단들에게 전화를 걸어 그들의 가장 비싼 선수를 사는게 되었다. 당신의 임무는 첼시가 리스트에서 가장 비싼 선수를 찾아낼 수 있도록 돕는 것이다.

입력

첫 번째 줄에는 테스트 케이스의 개수 n이 주어진다 (n≤100).

각 테스트 케이스의 첫 번째 줄 p는 고려해야될 선수의 수이다 (1≤p≤100).  

그 아래 p개의 줄에는 선수의 정보가 표시된다. 

각각의 줄은 선수의 가격 C 와 이름을 입력한다 (C<2*109).

  • 모든 선수의 가격은 서로 다르다. 
  • 선수의 이름은 20자 이하여야 하며, 사이에 공백이 있어서는 안 된다.

출력

각각의 테스트 케이스에서 가장 비싼 선수의 이름을 출력해야한다.


풀이

C++ 의 vector 개념을 전혀 모르는 상태에서 풀어서 검색해가면서 좀 오래 걸렸다.

파이썬의 배열과 비슷하게 쓰이는 것 같다(맞나...?)

입력 받을 때 마다 max_num 값과 비교하여 만약 max_num 보다 크다면 max_num을 갱신하고, ans값을 해당 값에 대한 이름으로 넣었다

 

코드

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

int main()
{
	int n, p;
	
	cin >> n;

	for (int i = 0; i < n; i++)
	{
		cin >> p;
		vector <int> price(p);
		vector <string>player(p);
		int max_num = 0;
		string ans;

		for (int j = 0; j < p; j++)
		{
			cin >> price[j] >> player[j];

			if (max_num < price[j])
			{
				max_num = price[j];
				ans = player[j];
			}
		}
		cout << ans << endl;
	}
}
반응형

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

[백준] 2439. 별 찍기 - 2 : C++  (0) 2022.01.19
[백준] 2438.별 찍기 - 1 : C++  (0) 2022.01.19
[백준] 1001. A - B : C++  (0) 2022.01.17
[백준] 1000. A + B : C++  (0) 2022.01.17
[백준] 10172.개 : C++  (0) 2022.01.17
반응형

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

 

1001번: A-B

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

www.acmicpc.net

문제

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

입력

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

첫째 줄에 A-B를 출력한다.


풀이

A, B 를 미리 선언 후 입력받는다

코드

#include<iostream>
using namespace std;

int main()
{
	int A, B;
	cin >> A;
	cin >> B;

	cout << A - B;
}
반응형

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

[백준] 2438.별 찍기 - 1 : C++  (0) 2022.01.19
[백준] 11098. 첼시를 도와줘! : C++  (0) 2022.01.18
[백준] 1000. A + B : C++  (0) 2022.01.17
[백준] 10172.개 : C++  (0) 2022.01.17
[백준] 10817. 세 수 : python  (0) 2022.01.17
반응형

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

 

1000번: A+B

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

www.acmicpc.net

문제

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

입력

첫째 줄에 A와 B가 주어진다. (0 < A, B < 10)

출력

첫째 줄에 A+B를 출력한다.

 


풀이

C++ 에서는 정수를 입력받기 위해 미리 입력받을 변수를 선언해야한다.

코드

#include<iostream>
using namespace std;

int main()
{
	int A, B;

	cin >> A;
	cin >> B;

	cout << A + B;

}

 

반응형

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

[백준] 11098. 첼시를 도와줘! : C++  (0) 2022.01.18
[백준] 1001. A - B : C++  (0) 2022.01.17
[백준] 10172.개 : C++  (0) 2022.01.17
[백준] 10817. 세 수 : python  (0) 2022.01.17
[백준] 10171. 고양이 : C++  (0) 2022.01.07
반응형

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

 

10172번: 개

문제 아래 예제와 같이 개를 출력하시오. 입력 출력 예제 입력 1 복사 예제 출력 1 복사 |\_/| |q p| /} ( 0 )"""\ |"^"` | ||_/=\\__|...

www.acmicpc.net

문제

아래 예제와 같이 개를 출력하시오.

입력

없음.

출력

개를 출력한다.

 


풀이

고양이와 마찬가지로 이스케이프 시퀀스를 이용하여 푼다

이번에는 << endl; 을 사용해서 풀었다

코드

#include<iostream>
using namespace std;

int main()
{
	cout << "|\\_/|" << endl;
	cout << "|q p|   /}" << endl;
	cout << "( 0 )\"\"\"\\" << endl;
	cout << "|\"^\"`    |" << endl;
	cout << "||_/=\\\\__|" << endl;
}
반응형

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

[백준] 1001. A - B : C++  (0) 2022.01.17
[백준] 1000. A + B : C++  (0) 2022.01.17
[백준] 10817. 세 수 : python  (0) 2022.01.17
[백준] 10171. 고양이 : C++  (0) 2022.01.07
[백준] 1977. 완전제곱수 : C++  (0) 2021.12.31
반응형

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

 

10817번: 세 수

첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)

www.acmicpc.net

문제

세 정수 A, B, C가 주어진다. 이때, 두 번째로 큰 정수를 출력하는 프로그램을 작성하시오. 

입력

첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)

출력

두 번째로 큰 정수를 출력한다.


풀이

.sort()를 사용하여 배열을 크기순으로 정렬할 계획이라

a,b,c를 각각 받지 않고 list로 받아줬다.

코드

#10817 세수
numlist = list(map(int,input().split()))
numlist.sort()
print(numlist[1])
반응형

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

[백준] 1000. A + B : C++  (0) 2022.01.17
[백준] 10172.개 : C++  (0) 2022.01.17
[백준] 10171. 고양이 : C++  (0) 2022.01.07
[백준] 1977. 완전제곱수 : C++  (0) 2021.12.31
[백준] 2530. 인공지능 시계 : python  (0) 2021.12.19
반응형

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

 

10171번: 고양이

아래 예제와 같이 고양이를 출력하시오.

www.acmicpc.net

문제

아래 예제와 같이 고양이를 출력하시오.

입력

없음.

출력

고양이를 출력한다.


접근방법

이스케이프 시퀀스를 이용한다

백슬래시를 입력하고 싶은 경우 \\ << 이렇게 백슬래시 뒤에 \를 입력해준다

이게 지금은... 원 표시로 보이는데 코드 작성할땐 백슬래시임...

 

\n 대신에 << endl 를 사용해줘도 될 것 같지만 \n을 사용해서 풀었다

코드

#include<iostream>
using namespace std;

int main()
{
	cout << "\\    /\\\n";
	cout << " )  ( ')\n";
	cout << "(  /  )\n";
	cout << " \\(__)|\n";
}

 

반응형

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

[백준] 10172.개 : C++  (0) 2022.01.17
[백준] 10817. 세 수 : python  (0) 2022.01.17
[백준] 1977. 완전제곱수 : C++  (0) 2021.12.31
[백준] 2530. 인공지능 시계 : python  (0) 2021.12.19
[백준] 2525. 오븐 시계 : python  (0) 2021.12.19
반응형

 

 

파이참에서는 이렇게 폴더로 문제를 분류해서 알고리즘을 정리하였는데

비주얼 스튜디오에서 백준 문제를 풀기위해 매번 새로운 프로젝트를 생성하고 있으니

이게...맞나...? 하는 생각이 들었다.

물어볼 사람이 없어서 그냥 그렇게 하던 중이었는데(아직 C++ 배열 만드는 법을 몰라서 몇문제 안풀었음)뭔가 무언가... 설명도 못하겠고 맞는지도 모르겠지만 프로젝를 생성할때 마다 생기는 저 외부종속성 내의 파일들이 나의 메모리를 낭비 중이라는 생각이 들어서 찾다 찾다 찾았다!

 

사진처럼 소스파일에 .cpp 파일을 생성해서 빌드하면

  • 오류 LNK2005 _main이(가) boj_start.obj에 이미 정의되어 있습니다.
  • 오류 LNK1169 여러 번 정의된 기호가 있습니다.

라는 오류가 생성되는데 이 오류를 해결하는 방법은

1. 사용하지 않는 소스 마우스 오른쪽 클릭 후 속성 접속

2. 빌드에서 제외 항목을 '예'로 변환

3. 확인 후 빌드 할 항목 빌드!

이제 두번째 파일도 빌드가 되는걸 확인할 수 있다!

반응형
반응형

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

 

1977번: 완전제곱수

M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완

www.acmicpc.net

문제

M과 N이 주어질 때 M이상 N이하의 자연수 중 완전제곱수인 것을 모두 골라 그 합을 구하고 그 중 최솟값을 찾는 프로그램을 작성하시오. 예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 완전제곱수는 64, 81, 100 이렇게 총 3개가 있으므로 그 합은 245가 되고 이 중 최솟값은 64가 된다.

입력

첫째 줄에 M이, 둘째 줄에 N이 주어진다. M과 N은 10000이하의 자연수이며 M은 N보다 같거나 작다.

출력

M이상 N이하의 자연수 중 완전제곱수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 완전제곱수가 없을 경우는 첫째 줄에 -1을 출력한다.


 C++ 코드

#include <iostream>

int main()
{
    int M, N;
    
    std::cin >> M;
    std::cin >> N;

    int i = 1;
    int sum = 0;
    int min = 789456123;
    while (true) {
        int ans = 0;
        ans = i * i;
        if (ans >= M && ans <= N) {
            sum += ans;
            if (ans < min) {
                min = ans;
            }
        }
        else if (ans > N) {
            break;
        }
        i++;
    }
    if (sum <= 0) {
        std::cout << -1;
    }
    else {
        std::cout << sum << "\n" << min;
    }
}

풀이

완전제곱수 = i * i

i가 하나씩 커지면서 만들 수 있는 모든 완전제곱수를 만든다.

만들어진 완전제곱수의 범위가 주어진 범위내일 경우 sum에 값을 더하고 초과하면 while문을 나온다

만약 sum 이 0 일경우 -1 값이 없으므로 -1 출력한다

반응형
반응형

들어가기 앞서

반복문으로 기본적인 C++의 문법을 접하고나니 크게 어렵지 않았습니다

기본적으로

함수(조건){코드}

의 모양을 하고 있었고, 문장의 끝에 세미콜론을 붙여줘야하고

if 문에서 python 과 다른 점이라고 한다면...

elif 를 else if라고 작성해야 한다는 점 정도...?

크게 어려울건 없군요

최종코드

#include <iostream>

int main()
{
    int a, b;
    std::cin >> a;
    std::cin >> b;

    if (a > b) {
        std::cout << a << "가" << b << "보다 큽니다";
    }
    else if (a == b) {
        std::cout << a << "와" << b << "가 같습니다";
    }
    else {
        std::cout << a << "보다" << b << "가 큽니다";
    }
}

숫자를 2개 입력받고 비교해서 어떤 수가 더 큰지 출력해주는 코드를 작성하였습니다.

기본적으로 python과 다를게 없기 때문에 크게 어렵지 않았습니다.

위에서 부터 값을 처리합니다.

 

이제 진짜로 백준 문제를 풀 수 있을 것 같아요

참고 사이트:

https://www.w3schools.com/cpp/cpp_conditions.asp'

 

C++ If ... Else

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

반응형
반응형

들어가기 앞서

바로 직전 포스트에서 입출력을 사용해봤으니 이제 백준 문제를 풀 수 있다고 생각했는데

문제를 풀려고 보니깐 반복문이랑 조건문을 사용할 줄 모르는 상태였습니다

이 얼마나 오만방자한 생각인가...!

그래서 이번엔 반복문을 간단히 연습해보는 코드를 만들어볼 생각입니다

흠 그 전에 C++ 프로젝트 생성하는 법 부터 배워야 할 것 같습니다... 임의로 whilepractice.cpp라는 파일을 생성했는데 실행을 할 수가 없군요... C++의 길을 멀고 험하다

매번 새 프로젝트를 생성할 수 밖에 없나...

 

완성코드

#include <iostream>

int main()
{
	std::cout << "while문\n";
	int i = 0;
	while (i < 5) {
		std::cout << i << "\n";
		i++;
	}
	std::cout << "for문\n";
	for (int j = 0; j < 5; j++) {
		std::cout << j << "\n";
	}
}

{} 중괄호 안에 코드가 작성 되어야 한다,

상수 값 1을 더하기 위해서 += 1 이 아니라 ++을 사용한다,

for문의 형태 외에는 크게 다른 점이 없습니다.

 

정리

참고 사이트:

https://www.w3schools.com/cpp/cpp_while_loop.asp

 

C++ While Loop

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

https://www.w3schools.com/cpp/cpp_for_loop.asp

 

C++ For Loop

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

 

반응형

+ Recent posts