8일차: 쌓기
부인 성명:
I am a beginner in competitive programming, and this is me documenting my learnings. So, anything I say is just what I think at the moment and should not be taken as hard truths.
문제 1: caps lock
일부 속성을 기반으로 답변하십시오.
#define all(x) begin(x), end(x)
main() {
string s;
cin >> s;
int n = s.length();
bool first = islower(s[0]);
bool c = count_if(all(s), [](char c){ return isupper(c); });
// check condition
if((c == n) || (first && (c == n-1))) {
for(auto& e: s) {
if(isupper(e)) cout << tolower(e);
else cout << toupper(e);
}
} else {
cout << s;
}
}
대소문자를 전환하기 위해 비트 연산자를 사용할 수도 있습니다. 코드를 크게 단순화합니다.
for(auto& c: s) {
cout << (char) (c^32); // toggle case
}
새로운 cpp 표준 알고리즘 사용:
문제 2: Xenia와 Ringroad
간단한 수학 문제.
#define forn(i, n) for(int i = 0; i < n; i++)
main() {
ll n, m;
cin >> n >> m;
ll ans = 0, curr = 1;
forn(_, m) {
ll next;
cin >> next;
if(next >= curr) ans += (next-curr);
else {
ans += (n-curr)+next;
}
curr = next;
}
cout << ans;
}
연산
우리는 오늘 새로운 알고리즘을 배우지 않았습니다.
문제를 더 많이 연습해서 어딘가에 갇혔을 때 새로운 알고리즘을 배울 수 있도록 해야 합니다.
또한 모든 복잡한 알고리즘을 한 번에 배우는 것보다 기본을 아는 것이 도움이 됩니다.
필요한 경우 새로운 알고리즘을 계속 배우고 연습할 질문을 두 배로 늘립니다.
출처
Reference
이 문제에 관하여(8일차: 쌓기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/geekypandey/day-8-stacking-up-39ib텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)