목록프로그래머스 알고리즘/1단계 (50)
N
문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers의 길이는 2 이상 100 이하입니다. numbers의 모든 수는 0 이상 100 이하입니다. 이중 for문을 이용하여 2개의 수를 더하여 더한 값이 check에서 false 이면 answer에 넣어주도록 한다. 그리고 check[sum]을 true로 바꿔주어 더한 결과가 중복적으로 들어가지 않도록 해주면 된다. 마지막에는 오름차순으로 정렬하여 리턴하면 끝! #include #include #include using namespace std; vector so..
sort를 이용하여 푸는 문제..! 우선 을 include 하여 sort를 쓰도록 하자..! sort는 기본적으로 오름차순 정렬이기 때문에 sort(d.begin(), d.end());만 써주면 된다..! 그리고 int형 변수 sum을 선언한다. for문을 통해 sum + d [i]가 budget보다 작으면 더하여 answer++을 해주고, 더한 값이 budget보다 크다면 바로 answer를 리턴한다..! easy..! #include #include #include #include #include using namespace std; int solution(vector d, int budget) { int answer = 0, sum = 0; sort(d.begin(), d.end()); for(in..
이중 for문 사용에 관한 문제다...! 아마 c언어를 배울 때, 특히 for문에 대해 배울 때 많이 봤던 문제일 수도 있다..! 바로 이중 for문을 이용하여 별표를 찍는 것..! 많이 어렵지 않아서 설명도 딱히 필요 없을 것 같다..! 만약 어렵게 느껴진다면 a와 b를 작은 수로 잡아서 직접 손으로 따라가는 것도 괜찮은 방법 같다..! #include using namespace std; int main(void) { int a; int b; cin >> a >> b; for(int i = 0; i < b; i++) { for(int j = 0; j < a; j++) { cout
우선 tmp 변수를 선언하여 x를 대입한다. tmp는 계속해서 똑같은 값(x)을 더해줄 때 사용한다. 왜냐하면 for문에서 x의 값을 넣었을 때, x += x를 하면 x = 2일 때, x = 2, 4, 8, 16... 이 되기 때문이다..! 그래서 변하지 않는 tmp를 이용하여 x에 더해준다..! #include #include using namespace std; vector solution(int x, int n) { vector answer; int tmp = x; for(int i = 0; i < n; i++) { answer.push_back(x); x += tmp; } return answer; }
행렬의 덧셈을 구현하는 문제..! arr1과 arr2의 size는 같으니까 아무거나 사용해도 상관없다..! 첫 번째 for문에서 int형 벡터 tmp와 int형 변수 sum을 선언해준다. sum은 행렬의 덧셈을 저장해주는 변수이고, tmp는 각 행의 덧셈을 넣어주는 변수이다. 이중 for문을 사용하여 ( [0, 0] + [0, 0] ) ( [0, 1] + [0, 1] ) ( [1, 0] + [1, 0] ) ( [1, 1] + [1, 1] ) 이렇게 계산을 한다. 문제의 첫 번째 예시를 통해 tmp에 대해 자세하게 설명하자면 i = 0, j = 0 일 때, sum = 4 -> tmp에 4 저장. i = 0, j = 1 일 때, sum = 6 -> tmp에 6 저장. 이렇게 두번 돌게 되면 tmp에는 (4,..
핸드폰 번호의 뒷 4자리를 제외한 모든 번호를 '*'로 가리면 된다..! for문을 통해 phone_number.size()만큼 돌면서 i의 위치가 뒷 4자리가 아니면 '*'을 answer에 넣어주고, 뒷 4자리이면 번호를 그대로 넣어주면 된다..! 어렵지 않은 문제..! 문자열 길이가 20자 이하라서 for문을 돌려도 된다..! #include #include using namespace std; string solution(string phone_number) { string answer = ""; for(int i = 0; i < phone_number.size(); i++) { if(i < phone_number.size() - 4) answer.push_back('*'); else answer...
우선 각 자릿수를 구하기 위해 임시 변수 tmp와 sum을 선언한다. tmp는 x를 대입하고, tmp를 통해 자릿수를 구한다. sum은 각 자릿수를 더한 값을 저장한다. tmp가 0이면 모든 자릿수를 구하게 되므로, while문을 통해 tmp를 10으로 나눴을 때 나머지 값을 sum에 더해주고 tmp는 10으로 나눈 몫을 저장한다. while을 빠져나오고, x를 각 자릿수를 더한 sum으로 나눴을 때 나머지가 0이면 true를 반환, 아니면 false를 반환한다..! #include #include using namespace std; bool solution(int x) { int tmp = x, sum = 0; while(tmp > 0) { sum += tmp % 10; tmp /= 10; } if(..
for문만 사용할 줄 알면 풀 수 있는 문제..! for문을 돌면서 answer에 arr에 있는 수를 모두 더한 후, 마지막에 arr.size()만큼 나눠주면 끄으으읕..! #include #include using namespace std; double solution(vector arr) { double answer = 0; for(int i = 0; i < arr.size(); i++) answer += arr[i]; answer /= arr.size(); return answer; }