개발자 바다의 파도

개발의 무인도에 갇혔다

알고리즘 공부/프로그래머스 알고리즘

코딩 기초 트레이닝 - 20일차 (C++)

개바파 2024. 1. 10. 18:27

20일차 - 함수 (메서드)

 

1번) 배열의 길이를 2의 거듭제곱으로 만들기

 

 

     이번 문제는 2의 거듭제곱을 만드는 것이 핵심입니다. 일단 몇 승까지 해야하는지 알아야 하니 승을 구하는 식부터 구합니다. 만일 승을 구할 때 백터 arr 크기가 1이면 2^0은 1이니 그냥 1로 값을 넘기면 됩니다. 1보다 큰 경우에는 19번에 있는 while문에서 크기가 백터 arr보다 클 때까지 size를 2로 계속 곱해줍니다. 이것이 거듭제곱으로 연산 해주는 방법입니다. 이후 24번 줄에서 arr와 size의 차를 구한 다음 28번 for문에서 answer에 있는 남은 공간에 0을 삽입해주면 됩니다.

 

2번) 배열 비교하기

 

 

     이번 문제는 처음에는 백터 arr1와 백터 arr2의 크기를 비교를 하고, 크기가 같은 경우 arr1의 인덱스 합과 arr2의 인덱스 합을 비교해서 리턴 값을 반환해주는 문제입니다. 11번 if문은 arr1 크기가 더 큰 경우, 1을 반환해주는 것입니다. 15분 if문은 arr2가 큰 경우로, -1을 리턴해주는 것입니다. 19번 else문은 arr1와 arr2의 크기가 같은 경우이며, 21번 for문은 arr1의 인덱스 값의 합을 구하는 루프문, 25번줄 for문은 arr2의 인덱스 값의 합을 구하는 루프문입니다. 이후 30번줄에서 41번 줄까지 두 수의 비교해서 특정 값을 리턴해주는 문구이다.

 

3번) 문자열 묶기

 

 

     이번 문제는 문자열은 백터 strArr에 있는 인덱스 값들의 길이를 알아서 그 길이에 가장 많은 수를 구하는 문제입니다. 간단하게 배역 arr을 설정을 해준 다음 12번 for문으로 초기화를 해줍니다. 이후 17번 for문은 strArr의 인덱스 크기로 arr의 특정 위치로 해서 값을 1 올립니다. 그 다음 22번 for문에서 제일 큰 인덱스 값을 찾아서 그 값을 리턴을 해줍니다.

 

4번) 배열의 길이에 따라 다른 연산하기

 

 

     이번 문제는 백터 arr의 크기가 짝수인지 홀수인지 알아야 한다. 이후 홀수인 경우, 매 인덱스가 짝수인 경우 그 인덱스를 n 값만큼 더해주면 됩니다. 반대로 짝수인 경우, 매 인덱스가 짝수인 경우, 매 인덱스가 홀수인 경우 그 인덱스를 n값만큼 더해주면 됩니다.  

 

5번) 뒤에서 5등까지

 

 

     이번 문제를 백터 num_list에서 가장 작은 5개의 수를 구한 다음 이 값들을 백터 answer에 삽입해주면 됩니다. 이번 문제는 num_list을 오름차순으로 정렬을 해주면 됩니다. 10줄에서 2중 for문으로 정렬을 해줍니다. 이후 23번 줄에서 answer에 5 원소를 삽입해주면 됩니다.

 

코드 복붙 주소 - https://github.com/ResToEons/ProgrammersAlgorithm/tree/main/%EC%BD%94%EB%94%A9%20%EA%B8%B0%EC%B4%88%20%ED%8A%B8%EB%A0%88%EC%9D%B4%EB%8B%9D/20%EC%9D%BC%EC%B0%A8