C++ Programmers Test/Level 1

[Programmers] [C++] x만큼 간격이 있는 n개의 숫자 / 핸드폰 번호 가리기

시카Dev 2024. 7. 29. 23:41
<문제설명>
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해
x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다.
다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

<제한 조건>
x는 -10000000 이상, 10000000 이하인 정수입니다.
n은 1000 이하인 자연수입니다.

<입출력 예>
x	n	answer
2	5	[2,4,6,8,10]
4	3	[4,8,12]
-4	2	[-4, -8]

#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+1; i++)
                answer.push_back(i*x);
    
    return answer;
}

 

 

처음엔 for문 안에 if (i%x == 0)을 넣어 x의 배수가 되는 수만 넣을려고 했는데, 생각해보니 x씩 증가한다면 x을 곱한다는 것 같다.

이것을 n번 반복하면 되므로 n+1까지 하면 된다.

 


 

<문제 설명>
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때,
전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린
문자열을 리턴하는 함수 solution을 완성해주세요.

<제한 조건>
phone_number는 길이 4 이상, 20이하인 문자열입니다.

<입출력 예>

phone_number	return
"01033334444"	"*******4444"
"027778888"	    "*****8888"

#include <string>
#include <vector>

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 += "*";            
        else 
            answer += phone_number[i];
          
    return answer;
}

 

번호 문자열 한바퀴를 돌리되, 끝 네자리까지만 *을 붙이고 이후는 그냥 번호를 붙이면 될 것 같다.

다른 사람들이 풀이한 것을 보니까 아예 입력받은 번호를 바꾸던데 신박했다