기록 보관소

[프로그래머스] Lv.1 문제 PART 1(C++) 본문

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

[프로그래머스] Lv.1 문제 PART 1(C++)

JongHoon 2024. 4. 29. 18:45

프로그래머스 코딩 테스트 : Lv.1 문제(C++)

https://school.programmers.co.kr/learn/challenges?order=acceptance_desc&page=1&languages=cpp&levels=1

 

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

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

school.programmers.co.kr


프로그래머스 Lv.1 문제 : 문자열 내 p와 y의 개수

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

 

프로그래머스

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

programmers.co.kr


문제 설명

대문자와 소문자가 섞여있는 문자열 s가 주어집니다.

s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요.

'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다.

단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다.

예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다.


제한사항

  • 문자열 s의 길이 : 50 이하의 자연수
  • 문자열 s는 알파벳으로만 이루어져 있습니다.

입출력 예

입출력 예
입출력 예 설명


코드

#include <string>
#include <iostream>
using namespace std;

bool solution(string s) {
    int p_num = 0, y_num = 0;
    for (auto c : s) {
        if (c == 'p' || c == 'P')
            p_num++;
        else if (c == 'y' || c == 'Y')
            y_num++;
    }
    
    return (p_num == y_num);
}
다른 사람의 풀이 : count 변수를 이용하는 방법

#include <string>
bool solution(std::string s) {
    int count = 0;
    for (auto c : s)
        count += (c == 'p' || c == 'P') ? 1 : (c == 'y' || c == 'Y') ? -1 : 0;
    return !(count);
}

결과


프로그래머스 Lv.1 문제 : 문자열을 정수로 바꾸기

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

 

프로그래머스

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

programmers.co.kr


문제 설명

문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요.


제한사항

  • s의 길이는 1 이상 5이하입니다.
  • s의 맨앞에는 부호(+, -)가 올 수 있습니다.
  • s는 부호와 숫자로만 이루어져있습니다.
  • s는 "0"으로 시작하지 않습니다.

입출력 예

입출력 예


코드

#include <string>
#include <vector>

using namespace std;

int solution(string s) {
    return stoi(s);
}

결과


프로그래머스 Lv.1 문제 : 약수의 합

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

 

프로그래머스

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

programmers.co.kr


문제 설명

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.


제한사항

  • n은 0 이상 3000이하인 정수입니다.

입출력 예

입출력 예
입출력 예 설명


코드

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    
    for (int i = 1; i <= n; i++)
        if (n % i == 0)
            answer += i;
    
    return answer;
}
다른 사람의 풀이 : 약수를 더 빨리 찾는 방법

#include <cmath>
int solution(int n) {
    int answer = 0;
    for(int i = 1; i <= sqrt(n); i++) 
        answer += !(n%i) ? i == n/i ? i : i+n/i : 0;
    return answer;
}

결과


여담

생각보다 레벨 1문제가 0레벨과 비교했을 때 비슷한 난이도의 문제들이 많았다.

그래서 쉬운 문제들은 이전 기초 트레이닝처럼 앞으로 3개씩 묶어서 풀어보려고 한다. 그래서 문제 풀이 순서는 정답률 높은 문제로 할 것이다.

어느정도 진행하면서 조금 어려워졌다싶으면 다시 1문제씩 풀어볼 생각이다.

아무튼 오늘 문제들은 쉬운편이어서 금방 끝냈다.