상세 컨텐츠

본문 제목

항해31일차

본문

728x90
반응형

백준 1755번 문제
정렬 관련

아래는 백준 1755번 문제의 C++ 코드 예제를 파이썬으로 변환한 것입니다. 원본 C++ 코드는 숫자를 영어로 변환하고, 이를 사전 순으로 정렬하여 출력하는 방식입니다.

## C++ 코드 예제
원본 C++ 코드는 다음과 같습니다:

```cpp
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;

void make_word(string& temp, string& a) {
    for (int i = 0; i < a.length(); i++) {
        if (a[i] == '0') { temp += "zero"; }
        else if (a[i] == '1') { temp += "one"; }
        else if (a[i] == '2') { temp += "two"; }
        else if (a[i] == '3') { temp += "three"; }
        else if (a[i] == '4') { temp += "four"; }
        else if (a[i] == '5') { temp += "five"; }
        else if (a[i] == '6') { temp += "six"; }
        else if (a[i] == '7') { temp += "seven"; }
        else if (a[i] == '8') { temp += "eight"; }
        else if (a[i] == '9') { temp += "nine"; }
    }
}

int main() {
    int M, N;
    cin >> M >> N;
    vector<pair<int, string>> numbers;

    for (int i = M; i <= N; i++) {
        string temp = "";
        make_word(temp, to_string(i));
        numbers.push_back({i, temp});
    }

    sort(numbers.begin(), numbers.end(), [](pair<int, string>& a, pair<int, string>& b) {
        return a.second < b.second;
    });

    for (int i = 0; i < numbers.size(); i++) {
        cout << numbers[i].first << " ";
        if ((i + 1) % 10 == 0) cout << endl;
    }
    return 0;
}
```
-------------------------------------------------------
## 파이썬으로 변환한 코드
아래는 위의 C++ 코드를 파이썬으로 변환한 코드입니다:

```python
def make_word(num):
    words = {
        '0': "zero", '1': "one", '2': "two", '3': "three",
        '4': "four", '5': "five", '6': "six", '7': "seven",
        '8': "eight", '9': "nine"
    }
    return ''.join(words[digit] for digit in str(num))

M, N = map(int, input().split())
numbers = []

for i in range(M, N + 1):
    word_representation = make_word(i)
    numbers.append((i, word_representation))

# Sort by the word representation
numbers.sort(key=lambda x: x[1])

# Print the results, 10 numbers per line
for i in range(len(numbers)):
    print(numbers[i][0], end=' ')
    if (i + 1) % 10 == 0:
        print()
```

## 코드 설명
- `make_word` 함수는 숫자를 문자열로 변환하여 각 숫자에 해당하는 영어 단어를 연결합니다.
- 입력받은 M과 N 사이의 숫자를 변환하여 리스트에 저장합니다.
- 리스트를 각 숫자의 영어 표현 기준으로 정렬한 후, 10개씩 출력합니다.

이 코드는 C++의 로직을 그대로 유지하면서 파이썬의 문법에 맞게 변환되었습니다.

728x90
반응형

'<알고리즘 문제풀이& 연습> > 코딩테스트 연습' 카테고리의 다른 글

항해33일차  (0) 2024.11.30
항해32일차  (2) 2024.11.29
항해30일차  (1) 2024.11.27
항해29일차  (2) 2024.11.26
항해28일차  (1) 2024.11.25

관련글 더보기