문제설명
주어진 배열에서 가장 큰수와 그 수의 위치값을 찾아 다른 배열에 담아 반환 하라는 문제
제한사항
입출력 예
가장큰수, 해당 위치값 순으로 담는다
말로하는 순서도
solution함수선언 및 매개변수 int형 배열 array 선언 배열의 길이 size_t형 array_len선언
int* 형 answer 변수 선언 변수의 크기 할당을 위해 malloc를 활용하여 int의크기를 sizeof를 통해 계산하여 2를 곱한값을 할당
answer의 0번 위치의 초기값을 0으로 선언
for문 int i 선언 초기값 0으로함 i가 array_len보다 작을때 반복 i값 증가)
if문 array의 i번 위치의 있는 값이 answer의 0번 위치의 있는 값보다 클때
answer의 0번 위치의 array i번 위치의 있는 값을 넣는다
answer 1번 위치의 i값을 넣는다
for문이 끝나면 반환
소스코드
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
// array_len은 배열 array의 길이입니다.
int* solution(int array[], size_t array_len) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int* answer = (int*)malloc(2*sizeof(int));
answer[0]=0;
for(int i=0; i<array_len;i++)
{
if(array[i]>answer[0])
{
answer[0]=array[i];
answer[1]=i;
}
}
return answer;
}
풀이
가장 큰수와 그 위치값을 넣어야 했다 하나씩 값을 넣은후 그값이 더 크다면 변경하는 방식을 사용했다
차례대로 for문을 작동 시키기에 해당 for문의 인수를 위치값으로 활용했다
answer 0번 위치의 값을 0으로 초기화 하는것이 중요했다 그렇지 않으면 쓰레기 값으로 인해 for문이 제대로 작동하지 않았다
출처: 프로그래머스 코딩테스트연습 입문문제, https://school.programmers.co.kr/learn/courses/30/lessons/120899
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr