본문 바로가기

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

[프로그래머스] 코딩테스트 입문 Day1, Day2

728x90
반응형

오랜만에 코딩테스트 연습하려고 프로그래머스 들어가니 뭔가 문제가 엄청 생겨있더라...

자기 전 조금만 머리 쓰려고 Day1, Day2 문제들을 풀어봤다.

  • Day1 사칙연산
    • 두 수의 합
    • 두 수의 차
    • 두 수의 곱
    • 몫 구하기
  • Day2 사칙연산, 조건문, 배열
    • 두 수의 나눗셈
    • 숫자 비교하기
    • 분수의 덧셈
    • 배열 두배 만들기
//Day 1
//두 수의 합
int solution(int num1, int num2) {
    return num1+num2;
}

//두 수의 차
int solution(int num1, int num2) {
    return num1-num2;
}

// 두 수의 곱
int solution(int num1, int num2) {
    return num1*num2;
}

// 몫 구하기
int solution(int num1, int num2) {
    return num1/num2;
}

//Day 2
//두 수의 나눗셈
int solution(int num1, int num2) {
    return num1*1000/num2;
}

//숫자 비교하기
int solution(int num1, int num2) {
    return num1 == num2 ? 1 : -1;
}

//분수의 덧셈
vector<int> solution(int numer1, int denom1, int numer2, int denom2) {
    vector<int> answer;
    
    answer.push_back(numer1*denom2+denom1*numer2);
    answer.push_back(denom1*denom2);
    
    int max = denom1 >= denom2 ? denom1 : denom2;
    max = max >= answer.at(1) ? max : answer.at(1);
    
    for(int n=max; n>1; n--){
        if (answer.at(0)%n == 0 && answer.at(1)%n == 0){
            answer.at(0) = answer.at(0)/n;
            answer.at(1) = answer.at(1)/n;
        }
    }
    
    return answer;
}

// 배열 두 배 만들기
vector<int> solution(vector<int> numbers) {
    vector<int> answer;
    
    for (int i=0; i<numbers.size(); i++){
        answer.push_back(numbers.at(i)*2);
    }
    
    return answer;
}

순서대로 차근차근 30초컷 하다가 갑자기 분수의 덧셈에서 난이도 급상승해서 입문자용 맞아..?하면서 풀었는데...

막판에 계속 이상한 숫자 나오길래 수동 디버깅해보니가 비교문에서 answer.at(0)을 두 번 썼었다; (멍청1)

아니 그리고 지금 보니까 vector에 먼저 삽입했네; (멍청2) C# 문법 달라서 매번 할 때마다 까먹는다ㅠㅠ

그래도 수정하니까 추가했던 테스트 케이스도 바로 성공해서 제출~! 귀여운 스탬프 이미지 첨부 ㅋㅋ

12시 지나서 날짜 바뀐건 아쉽다... 내일 쉬는 날이니까 일어나서 Day3도 풀어봐야징

728x90
반응형