경우 1==================
#include <bits/stdc++.h>
using namespace std;
vector<string> stArr;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
string st;
cin >> st;
stArr.push_back(st);
int len_st = st.length();
for (int i = 0; i <len_st; i++) {
st.erase(0,1);
stArr.push_back(st);
}
//sort(stArr.begin(), stArr.end());
for (auto i : stArr)
cout << i << '\n';
}
경우 2=========================
#include <bits/stdc++.h>
using namespace std;
vector<string> stArr;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
string st;
cin >> st;
stArr.push_back(st);
int len_st = st.length();
for (int i = 0; i <len_st; i++) {
st.erase(0,1);
stArr.push_back(st);
}
sort(stArr.begin(), stArr.end());
for (auto i : stArr)
cout << i << '\n';
}
관련해서 찾아보고 정리하는 내용들===================
=================
현재 미해결
제출 했을때 내가 받게 되는 결과물.
출력 형식이 잘못되었습니다.
첫번째 줄에 개행문자가 들어가는것과 관련이 있는 것으로 보여짐.
sort()를 시행하고 나서 처음에 개행문자가 첨부되어 있는 경우는
아래에 한줄,
sort()를 시행하지 않고 나서 처음에 개행문자가 첨부되어 있지 않은 경우는
아래에 두줄.
여기서 차이가 있다.
이렇게 내가 enter를 치는것이 개행문자 '\n'를 입력하는 일이고, 그것이 영향을 미치는것으로 보여짐.
+++++++++++++++++++++++++
23.5.21 해결
for(int i=0; i<len_st;i++){
st.erase(0,1);
stArr.push_back(st);
}
으로 받을때, 공백인 한줄이 추가적으로 stArr에 push_back되고, 이게 그냥 sort를 안했을때는 프로그램에서 출력문의 맨 마지막에 나타나면서 공백이 2줄이 된다.
for(int i=0; i<len_st-1;i++){
st.erase(0,1);
stArr.push_back(st);
}
으로 받을때, 공백인 한 줄이 stArr에 들어가지 않고, 윗줄과도 공백이 없고 맨 마지막은 계속 들어가있던 공백 한줄만 표기되게 된다. ( 이 공백에 대해서는 원래 기본으로 있는것으로 보여지는데 정확히는 아직 알지 못했다)
처음에는 null 문자 '\o'가 있어서 이렇게 된다고 생각했는데 c++스타일의 string에는 그게 없다고 한다.
그렇다면 그냥 정말 공백 자체가 st로 받아들여져서 그게 들어간것인가.
+++++++++++++++++++++++++
이렇게 실험을 해보았는데, 한글자를 받고, erase로 한글자 지우고, 그걸 출력해보고, 그리고 vector에 원소로 넣어보고, 그리고 range based for loof를 통해서 출력을 해보았는데, 아무것도 들어있지 않은 string이 존재하고, 그리고 출력도 되고, 그리고 출력되어도 아무것도 없어서 그냥 공백처럼 아무것도 없는것처럼 처리된다.
여기다가 '\n'을 붙이면 이제 한줄이 그냥 아무것도 없이 띄어지는것이고, 좌우로 그냥 바로 붙어있으면 그냥 짜부되서 있는지 없는지도 모르는 상태가 될것이다.
이걸 내가 문제를 풀때 stArr에 넣어버렸기 때문에 여기서 차이가 계속 발생했던 것이다. 그리고 이걸 넣고 출력할때 '\n'을 했어서 그게 한줄로 표시가 되어있었던 것이고 그걸 sort할때 가장 앞으로 가서 위에 공백이 한줄 뽑혀나왔을 것이다.
'알고리즘 > BOJ' 카테고리의 다른 글
boj 10825번 문제를 통해 배운 tuple의 활용. tuple은 3개의 원소에 대해서만 사용하는것이 아니다. (0) | 2023.05.21 |
---|---|
boj 11656번 문제를 통해 접하게된 substr() 함수에 대해서. (0) | 2023.05.21 |
boj 11656번 문제를 통해 접하게된, st.length() 값을 곧바로 사용하는 것이 굉장히 잘못된 방법이 될 수 있는 경우에 대해서. (0) | 2023.05.21 |
boj 10814번. stable_sort()를 활용하지 않고 sort()를 사용해서 먼저 입력된 순서를 보존하는 방법. (0) | 2023.05.21 |
boj 1181번 문제를 통해 접하게된 erase(),unique()를 활용한 중복 요소 제거 방법. (0) | 2023.05.20 |