728x90
반응형
 

프로그래머스

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

programmers.co.kr

모든 문제의 출처는 프로그래머스이다.

문제는 다음과 같다.

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

 

[ C++ 풀이 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
vector<int> solution(vector<int> arr, int divisor) {
    vector<int> answer;
    
    for(auto i : arr) // 벡터의 모든 요소를 순회하면서
        if(i%divisor == 0// 나누어 떨어지면
            answer.push_back(i); // answer 벡터에 추가
    
    if(answer.empty()) // 모든 요소를 돌았음에도 answer가 비었다면
        answer.push_back(-1); // -1 값 대입
    else // answer에 값이 들어있다면 정렬!
        sort(answer.begin(), answer.end()); // 기본은 오름차순
    
    return answer;
}
cs

 

[ Python 풀이 ]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def solution(arr, divisor):
    
    answer = [] # 빈 리스트 생성.
    
    for i in arr: # arr 내 요소를 순회
        if i%divisor == 0# 나누어 떨어진다면
            answer.append(i) # 해당 요소를 answer 리스트에 추가
            
    if not answer: # 리스트가 비어있다면(리스트가 비면 거짓, 들어있으면 참)
        answer.append(-1# -1 추가
    else# 리스트가 비어있지 않다면
        answer.sort() # 기본 오름차순으로 정렬.
     
    return answer
 
 
# 아래와 같이 한 줄로도 처리가 가능하다.
# sort는 리스트의 내장 함수이며, 원본 리스트 내의 순서를 변경한다
# sorted는 일반 내장 함수로 원본 리스트를 변경하지 않고, 새롭게 정렬된 리스트를 반환한다.
def solution(arr, divisor):
    return sorted([i for i in arr if i%divisor == 0]) or [-1]
 
 
cs

 

sort와 sorted 정리해본 것 같은데, 그냥 나올 때 마다 정리하겠다.

C++ 에서도 Python 에서도 딱히 어려운 부분은 없기 때문에 그냥 마무리한다.

728x90
반응형

+ Recent posts