코딩테스트 | (c++) 백준 2562번: 최댓값

trevor1107·2021년 5월 20일
0

✅문제

9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오.

예를 들어, 서로 다른 9개의 자연수

3, 29, 38, 12, 57, 74, 40, 85, 61

이 주어지면, 이들 중 최댓값은 85이고, 이 값은 8번째 수이다.

문제 보기

🎹입력

첫째 줄부터 아홉 번째 줄까지 한 줄에 하나의 자연수가 주어진다. 주어지는 자연수는 100 보다 작다.

📢출력

첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 몇 번째 수인지를 출력한다.

✍풀어보기

#include <iostream>

using namespace std;

#define MAX 9

int main() {
	// 배열 및 필요 데이터 선언
	int number[MAX], index = 0, max = 0;

	for (int i = 0; i < MAX; i++) {
		// MAX 횟수만큼 숫자를 입력 받는다.
		cin >> number[i];

		// 이전 max 값보다 크면 값을 교체한다.
		if (max < number[i]) {
			max = number[i];
			// 현재 몇번째 배열의 순번인지 저장한다.
			index = i + 1;
		}
	}

	cout << max << '\n' << index;

	return 0;
}

배열(Array)?

배열은 같은 자료형의 변수를 일렬로 늘어놓은 형태이다. 선언할 때 대괄호[]연산자를 사용하여 배열의 길이를 지정할 수 있다. 배열에 있는 각 변수들을 요소(element)라고 한다.
예를들어 int numbers[5];은 길이가 5인 int형 배열이고, 즉 이것은 int형 변수 5개를 사용하는 것과 같다. 이름이 numbers이지만 말이다.

그리고 배열은 인덱스(index)라는 요소의 순번을 나타내는 개념이 있다. 이것 또한 선언할 때 와 마찬가지로 대괄호[]연산자로 요소에 접근이 가능하다. 첫번째 요소는 index가 0이다. 순차적으로 요소의 개수만큼 index도 존재한다. 물론 0부터 시작이라서 일반적인 숫자 카운트에서 1을 빼준다면 생각하기 편하다

예를들어 numbers[1] = 20;은 위에서 선언한 numbers 배열에서 두번째 요소에 접근하는 것이다. 주의점은 위에서 선언한 numbers배열이 길이가 5인데 numbers[5] = 30;처럼 6번째 요소에 접근하면 오류가 발생한다.

또한 메모리가 연속적이라는 점! 그래서 접근 속도가 매우 빠르다!
[0](4byte) [1](4byte) ...

전처리기? (#define? ...)

우선 C++에서의 컴파일 과정을 우선 알아보자면 아래와 같다.
소스코드 -> 전처리기 -> 컴파일 -> 오브젝트 파일 -> 링커 -> 실행파일
여기서 전처리기는 #키워드로 시작하고 #define, #undef, #include, #if, #ifdef, #elif, #else를 주로 사용한다.

#include는 외부 파일(cpp, h)을 현재 코드에 포함시키는 것이다.
#include<iostream> #include<vaector> ...
#define은 상수를 선언하거나, 매크로 함수를 선언할 때 사용한다. 그리고 이름은 구분을 위해 대문자로 짓는 관례가 있다.

  • 상수
    선언 : #define FI 3.141592
    사용 : double circle = 6 * FI;
  • 매크로함수
    선언 : #define SUM(x,y) x+y
    사용 : int num = SUM(3, 1); // 4가 담긴다.

#undef로 #define을 해제 시킬 수 있다.



참고 자료 및 사이트 (감사합니다)

profile
프론트엔드 개발자

0개의 댓글