코딩 테스트/프로그래머스

[프로그래머스] 코딩 기초 트레이닝 PART 4(C++)

JongHoon 2024. 1. 8. 23:20

프로그래머스  코딩 테스트 연습 : 코딩 기초 트레이닝(C++)

https://school.programmers.co.kr/learn/challenges?order=recent&languages=cpp&page=1&partIds=44139

 

코딩테스트 연습 | 프로그래머스 스쿨

개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!

school.programmers.co.kr


프로그래머스 코딩 기초 트레이닝 : n의 배수

https://school.programmers.co.kr/learn/courses/30/lessons/181937

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

정수 num과 n이 매개 변수로 주어질 때, num이 n의 배수이면 1을 return n의 배수가 아니라면 0을 return하도록 solution 함수를 완성해주세요.


제한 사항

  • 2 ≤ num ≤ 100
  • 2 ≤ n ≤ 9

입출력 예

입출력 예
입출력 예 설명


코드

#include <string>
#include <vector>

using namespace std;

int solution(int num, int n) {
    int answer = 0;
    
    answer = (num % n == 0) ? 1 : 0;
    
    return answer;
}

결과


프로그래머스 코딩 기초 트레이닝 : 공배수

https://school.programmers.co.kr/learn/courses/30/lessons/181936

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

정수 number와 nm이 주어집니다.

number가 n의 배수이면서 m의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요.


제한 사항

  • 10 ≤ number ≤ 100
  • 2 ≤ nm < 10

입출력 예

입출력 예
입출력 예 설명


코드

#include <string>
#include <vector>

using namespace std;

int solution(int number, int n, int m) {
    int answer = 0;
    
    if (number % n == 0 && number % m == 0)
        answer = 1;
    else
        answer = 0;
        
    return answer;
}
// 다른 사람의 풀이 1 : 삼항연산자를 사용하는 방법

#include <string>
#include <vector>

using namespace std;

int solution(int number, int n, int m) {
    return number%n==0 && number%m == 0 ? 1:0;
}
// 다른 사람의 풀이 2 : 변수에 조건식을 넣는 방법

#include <string>
#include <vector>

using namespace std;

int solution(int number, int n, int m) {
    int answer = 0;
    answer = ((number % n == 0) && (number % m == 0));
    return answer;
}

결과


프로그래머스 코딩 기초 트레이닝 : 홀짝에 따라 다른 값 반환하기

https://school.programmers.co.kr/learn/courses/30/lessons/181935

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

양의 정수 n이 매개변수로 주어질 때, n이 홀수라면 n 이하의 홀수인 모든 양의 정수의 합을 return 하고 n이 짝수라면 n 이하의 짝수인 모든 양의 정수의 제곱의 합을 return 하는 solution 함수를 작성해 주세요.


제한 사항

  • 1 ≤ n ≤ 100

입출력 예

입출력 예
입출력 예 설명


코드

#include <string>
#include <vector>
#include <cmath>

using namespace std;

int solution(int n) {
    int answer = 0;
    if (n % 2 == 0)
        while (n) {
            answer += pow(n, 2);
            n -= 2;
        }
    else
        while (n > 0) {
            answer += n;
            n -= 2;
        }
    
    return answer;
}
// 다른 사람의 풀이 : 삼항연산자를 사용하는 방법

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    while(n>0)
    {
        answer += n%2==0 ? n*n : n;
        n-=2;
    }
    return answer;
}

결과


프로그래머스 코딩 기초 트레이닝 : 조건 문자열

https://school.programmers.co.kr/learn/courses/30/lessons/181934

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.

  • 두 수가 n과 m이라면
    • ">", "=" : n >= m
    • "<", "=" : n <= m
    • ">", "!" : n > m
    • "<", "!" : n < m

두 문자열 ineq와 eq가 주어집니다.

ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다.

그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.


제한 사항

  • 1 ≤ nm ≤ 100

입출력 예

입출력 예
입출력 예 설명


코드

#include <string>
#include <vector>

using namespace std;

int solution(string ineq, string eq, int n, int m) {
    int answer = 0;
    
    if (ineq.compare("<") == 0 && eq.compare("=") == 0) {
        if (n <= m)
            answer = 1;
        else
            answer = 0;
    }
    else if (ineq.compare("<") == 0 && eq.compare("!") == 0) {
        if (n < m)
            answer = 1;
        else
            answer = 0;
    }
    else if (ineq.compare(">") == 0 && eq.compare("=") == 0) {
        if (n >= m)
            answer = 1;
        else
            answer = 0;
    }
    else {
        if (n > m)
            answer = 1;
        else
            answer = 0;
    }
    
    return answer;
}
// 다른 사람의 풀이 1 : 하나의 string으로 합치는 방법

#include <string>
#include <vector>

using namespace std;

int solution(string ineq, string eq, int n, int m) {
    string oper = ineq+eq;
    if(oper=="<=")
    {
        return n<=m;
    }
    else if(oper==">=")
    {
        return n>=m;
    }
    else if(oper=="<!")
    {
        return n<m;
    }
    else if(oper==">!")
    {
        return n>m;
    }
}
// 다른 사람의 풀이 2 : 삼항연산자 사용하는 방법

#include <string>
#include <vector>

using namespace std;

int solution(string ineq, string eq, int n, int m) {
    int answer = 0;
    if(eq == "!")
    {
        if(ineq == "<") answer = n<m ? 1 :0;
        else answer = n>m ? 1: 0;
    }else
    {
        if(ineq == "<") answer = n<=m ? 1 :0;
        else answer = n>=m ? 1: 0;
    }
    return answer;
}
// 다른 사람의 풀이 3 : 삼항연산자를 극단적으로(?) 사용하는 방법

#include <string>
#include <vector>

using namespace std;

int solution(string ineq, string eq, int n, int m) {
    int answer = 0;
    return ineq == "<"? eq == "="? n<=m? 1:0 : n<m? 1:0 : eq == "="? n>=m ? 1:0 : n>m ?1:0;
}

결과


프로그래머스 코딩 기초 트레이닝 : flag에 따라 다른 값 반환하기

https://school.programmers.co.kr/learn/courses/30/lessons/181933

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제 설명

두 정수 ab와 boolean 변수 flag가 매개변수로 주어질 때, flag가 true면 a + b를 false면 a - b를 return 하는 solution 함수를 작성해 주세요.


제한 사항

  • -1,000 ≤ ab ≤ 1,000

입출력 예

입출력 예
입출력 예 설명


코드

#include <string>
#include <vector>

using namespace std;

int solution(int a, int b, bool flag) {
    int answer = 0;
    if (flag)
        return a + b;
    else
        return a - b;
}

결과


여담

이번에 풀은 문제에서 삼항 연산자를 사용하는게 꽤 많았다.

삼항 연산자가 은근 유용할 때가 많고 코드도 좀 더 간결하게 보이게 해주는 것 같은데, 나는 잘 사용하지 않다보니 생각을 못해서 조금 길게 쓴게 있는 것 같다.

그런 의미에서 마지막 문제에서는 일부러 삼항연산자로 풀이했다.