백준 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++의 로직을 그대로 유지하면서 파이썬의 문법에 맞게 변환되었습니다.