(C++) 프로그래머스 - 평균 구하기

이미지
  문제 링크 프로그래머스 - 평균 구하기 난이도 프로그래머스 - 1단계 분류 구현 해설 vector의 크기를 파악하고, vector의 원소들을 모두 합한다. vector의 원소들의 평균을 구한다. 문제 접근 과정 문제에 주어진 조건을 파악한다. vector 원소들의 평균을 구한다. 원하는 결과를 파악한다. 각 원소들을 검색하여 해당 값을 더한다. vector의 크기에 맞춰서 나누어 평균을 도출한다. 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <string> #include <vector> using namespace std; double solution(vector< int > arr) { double answer = 0 ; for ( int i = 0 ; i < arr.size(); i++){ answer += arr[i]; } return answer /= arr.size(); }

(C++) 프로그래머스 - 하샤드 수

이미지
  문제 링크 프로그래머스 - 하샤드 수 난이도 프로그래머스 - 1단계 분류 구현 해설 각 자릿수의 값을 알기 위해서는 숫자를 쪼개야 한다. 문제 접근 과정 문제에 주어진 조건을 파악한다. x의 자릿수의 합을 구한다. x의 자릿수가 모두 구해질 때 까지 결과를 도출하면 안된다. 원하는 결과를 파악한다. x의 자릿수 총합을 이용하여 하샤드 수인지 확인한다. x와 자릿수 총합을 나눈다. 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include <string> #include <vector> using namespace std; bool solution( int x) { bool answer = true; int temp = x; int placeTotalValue = 0 ; // 각 자리수의 총 합 while (temp > 0 ){ int placeValue = temp % 10 ; placeTotalValue += placeValue; temp /= 10 ; } return answer = (x % placeTotalValue == 0 ) ? true : false; }

(C++) 프로그래머스 - 핸드폰 번호 가리기

이미지
  문제 링크 프로그래머스 - 핸드폰 번호 가리기 난이도 프로그래머스 - 1단계 분류 구현 해설 주어진 문자열의 길이에 상관없이, 뒷 4자리만 숫자로 표기한다. 그 외의 문자들은 모두 * 로 표기한다. 문제 접근 과정 문제에 주어진 조건을 파악한다. 뒷 4자리를 제외한 나머지 모두 * 로 표기한다. 문자열 길이 상관없이 무조건 4자리만 제외한다. 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <string> #include <vector> using namespace std; string solution(string phone_number) { string answer = "" ; answer = phone_number; // 원본 데이터를 임시 변수에 대입 for ( int i = 0 ; i < answer.length() - 4 ; i++) { answer[i] = '*' ; // 문자열의 네자리 전의 데이터를 모두 변환 } return answer; }

(C++) 프로그래머스 - 행렬의 덧셈

이미지
  문제 링크 프로그래머스 - 행렬의 덧셈 난이도 프로그래머스 - 1단계 분류 구현 해설 주어진 행렬들은 모두 같은 크기이다. 매개변수로 입력 받은 배열들의 합을 구하면 된다. 문제 접근 과정 문제에 주어진 조건을 파악한다. 행렬들의 크기는 모두 같다. 원하는 결과를 파악한다. 행렬들의 합을 구한다. 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #include <string> #include <vector> using namespace std; vector<vector< int >> solution(vector<vector< int >> arr1, vector<vector< int >> arr2) { vector<vector< int >> answer; int hor = arr1.size(); // 행 크기 int ver = arr1[ 0 ].size(); // 열 크기 vector< int > temp; // 임시 벡터 for ( int i = 0 ; i < hor; i++) { temp.clear(); // 임시 벡터 초기화 for ( int j = 0 ; j < ver; j++) { temp.push_back(arr1[i][j] + arr2[i][j]); // 각 행렬의 값을 더함 } answer.push_back(temp); // 결과 행렬에 대입 } return answer; }

(C++) 프로그래머스 - x만큼 간격이 있는 n개의 숫자

이미지
  문제 링크 https://programmers.co.kr/learn/courses/30/lessons/12954 난이도 프로그래머스 - 1단계 분류 구현 해설 매개변수로 x와 n을 받기 때문에, cin을 활용할 필요가 없다. x부터 시작하여 x만큼 증가하는 함수를 만든다. 문제 접근 과정 문제에 정답과 힌트가 존재한다. 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include <string> #include <vector> using namespace std; vector< long long > solution( int x, int n) { vector< long long > answer; for ( int i = 1 ; i <= n; i++) { answer.push_back(x * i); // push_back : vector의 맨 뒤의 인덱스로 삽입 } return answer; }

(C++) 프로그래머스 - 직사각형 별찍기

이미지
문제 링크 코딩테스트 연습 - 직사각형 별찍기 | 프로그래머스 (programmers.co.kr) 난이도 프로그래머스 - 1단계 분류 구현           해설 n과 m 두 개의 정수를 입력 받는다. 가로의 길이는 n이고, 세로의 길이는 m이다. 직사각형 형태로 출력한다. 문제 접근 과정 문제에 정답과 힌트가 모두 있는 문제이다. 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include <iostream> using namespace std; int main( void ) { int horizontal; // 가로 int vertical; // 세로 cin >> horizontal >> vertical; for ( int ver = 0 ; ver < vertical; ver++) { for ( int hor = 0 ; hor < horizontal; hor++) { cout << "*" ; } cout << "\n" ; } return 0 ; }