[프로그래머스] 코딩 기초 트레이닝 PART 4(C++)
프로그래머스 코딩 테스트 연습 : 코딩 기초 트레이닝(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와 n, m이 주어집니다.
number가 n의 배수이면서 m의 배수이면 1을 아니라면 0을 return하도록 solution 함수를 완성해주세요.
제한 사항
- 10 ≤ number ≤ 100
- 2 ≤ n, m < 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 ≤ n, m ≤ 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
문제 설명
두 정수 a, b와 boolean 변수 flag가 매개변수로 주어질 때, flag가 true면 a + b를 false면 a - b를 return 하는 solution 함수를 작성해 주세요.
제한 사항
- -1,000 ≤ a, b ≤ 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;
}
결과
여담
이번에 풀은 문제에서 삼항 연산자를 사용하는게 꽤 많았다.
삼항 연산자가 은근 유용할 때가 많고 코드도 좀 더 간결하게 보이게 해주는 것 같은데, 나는 잘 사용하지 않다보니 생각을 못해서 조금 길게 쓴게 있는 것 같다.
그런 의미에서 마지막 문제에서는 일부러 삼항연산자로 풀이했다.