목록전체 글 (315)
rueki

1차원 배열에 관한 문제이지만 문제의 중요한 포인트는 비교라는 점이다. 문제를 살펴 보자. 1. 배열에 숫자를 입력받는다. 2. 최대값을 찾는다. 3. 찾은 최대값이 있는 배열의 순서를 출력한다. 푸는 과정을 이렇게 3단계로 나눌 수 있겠다. 여기서 최대값을 찾을 때 최대값을 찾는 함수를 선언해줄 것이다. 풀기 전에 입출력 값부터 예시로 보자. #include #define N 9 // 자연수 갯수가 9개로 문제에 선언되었음 using namespace std; int arr[N]; // 배열 선언 int getMax(){ //최대값을 찾는 함수 int max = 0; int index = 0; for(int i = 0;i=max){ // 첫 최대값을 arr[0]으로 가정하고 배열 원소 각각 비교교 ma..

문제부터 바로 보자. 문제의 Point는 나누기연산을 통해 몫과 나머지를 구하는게 중요하다. 각 자리 수를 분할해서 더하고, 더한 값을 그 다음 숫자의 1의 자리로 활용하기 때문이다. 문제를 한 번 풀어보자. 26 / 10 = 2 -> 26을 10으로 나누어서 십의 자리 값을 얻었다. 26 % 10 = 6 -> 나머지 연산을 통해 1의 자리 값을 얻었다. 2 + 6 = 8 68이라는 값을 얻기 위해서는 6*10 + 8을 해주면 된다. 이 때 입출력값으로 입력값은 숫자, 출력 값은 원래 숫자로 돌아오기까지의 횟수이다. 위의 식을 코드로 한 번 써보자 #include using namespace std; int main(){ int n, n1, n2,n3; int count = 1; // 사이클 횟수 선언 ..

첫 게시 문제로 두 수의 합을 출력하는 문제를 가지고 왔다. 문제부터 살펴보자 여러 개의 테스트 케이스를 입력을 받아 출력을 해야하는 간단한 문제이지만 짚고 넘어갈 점이 있다. 1. 테스트 케이스의 입력 종료 조건 설정 2. 반복적으로 어떻게 입력을 받고 출력을 할 것인가? 2번 Point에 대해서는 문제가 요구하는 대로 while문을 써서 할 것이며 중요한 것은 1번 Point인데 두 가지 풀이로 나태내보았다. while(scanf("%d %d",&a,&b)!=EOF) while(cin>>a>>b) 첫 줄은 EOF(End of File)이라는 파일의 끝을 나타내는 매크로값을 사용하였고 두 번째 줄은 while문 조건으로 입력받을 때까지... 라는 조건을 걸었다. 코드로 한 번 살펴보자. #include..