※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 2757번 문제인 엑셀이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/2757
2757번: 엑셀
입력은 여러 줄이며, RnCm형태이다. n은 행 번호 (1<=n<=300000000), m은 열 번호 (1<=m<=300000000) 이다. 입력의 마지막은 n과 m이 모두 0이며, 이때는 출력하지 않고 프로그램을 종료하면 된다.
www.acmicpc.net
각 테스트케이스마다 문자열을 읽어들여 행 수와 열 수를 각각 읽고 열 번호를 문제에서 주어진 양식에 맞춰 출력해 문제를 해결하자.
각 열 번호를 주어진 양식으로 바꾸는 방법은 아래의 코드를 참고하자.
아래는 제출한 소스코드이다.
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string s;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> s;
while (s != "R0C0") {
int cidx = 0;
while (s[cidx] != 'C') cidx++;
int R = stoi(s.substr(1, cidx - 1)), C = stoi(s.substr(cidx + 1, s.length() - cidx - 1));
vector<char> ans;
while (C) {
C--;
ans.emplace_back(C % 26 + 'A');
C /= 26;
}
while (!ans.empty()) {
cout << ans.back();
ans.pop_back();
}
cout << R << '\n';
cin >> s;
}
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 5341 // C++] Pyramids (0) | 2022.12.18 |
---|---|
[BOJ 10189 // C++] Hook (0) | 2022.12.18 |
[BOJ 15724 // C++] 주지수 (0) | 2022.12.17 |
[BOJ 24448 // C++] 図書館 2 (Library 2) (0) | 2022.12.17 |
[BOJ 2756 // C++] 다트 (1) | 2022.12.17 |