728x90
반응형
Atcoder Beginner Contest 322 (ABC 322)
문제 세트는 여기서 확인할 수 있다.
문제
A. First ABC 2 (AC / 1 min 44 sec)
더보기
문자열 s에서 "ABC"가 처음 등장하는 위치가 몇 번째 문자인지 출력하는 문제. 없는 경우 -1을 출력한다.
#include <bits/stdc++.h>
using namespace std;
int main() {
cin.tie(0)->sync_with_stdio(0);
int n;
string s;
cin >> n >> s;
if (s.find("ABC") != -1)
cout << s.find("ABC") + 1;
else
cout << -1;
}
B. Prefix ans Suffix (AC / 5 min 23 sec)
더보기
문자열 S가 T의 접두사인지, 접미사인지, 둘 다인지, 둘 다 아닌지에 따라 출력하는 문제.
#include <bits/stdc++.h>
using namespace std;
int main() {
cin.tie(0)->sync_with_stdio(0);
int n, m;
string s, t;
cin >> n >> m >> s >> t;
if (t.substr(0, n) == s) {
if (t.substr(m - n, n) == s)
cout << 0;
else
cout << 1;
} else if (t.substr(m - n, n) == s)
cout << 2;
else
cout << 3;
}
C. Festival (AC / 11 min 41 sec)
더보기
먼저 불꽃놀이를 하는 날을 입력받는다. 1~N일에 대해 가장 가까운 다음 불꽃놀이 날까지 남을 날의 수를 출력한다.
입력이 오름차순인 것이 보장되어 있었기에 lower_bound로 해결했다.
#include <bits/stdc++.h>
using namespace std;
int main() {
cin.tie(0)->sync_with_stdio(0);
int n, m;
cin >> n >> m;
vector<int> v(m);
for (int i = 0; i < m; i++)
cin >> v[i];
for (int i = 1; i <= n; i++)
cout << *lower_bound(v.begin(), v.end(), i) - i << '\n';
}
E. Product Development (TLE)
더보기
K개의 파라미터가 모두 P 이상이 될 수 있도록 N개의 플랜 중 적절히 골라야한다. 각 플랜은 비용이 있고 최소 비용을 구하는 문제.
백트랙킹으로 문제를 해결하고자 했는데 TLE를 받았다. 조건을 추가해서 시간을 줄여봐도 소용없었다.
정해는 비트마스킹 + dp인 것 같다. 영문 에디토리얼이 올라오면 업솔빙 해봐야겠다.
총평
코드포스만 해보다가 처음 앳코더 콘테스트에 참가해봤다. 초보자는 ABC만 하라고 들어서 ABC에 맞춰서 참가해봤다.
C번까지는 쉬웠는데 D부터 급격한 난이도 상승을 느꼈고 E Solve가 D보다 많은 것을 보고 바로 E로 도망갔다.
확실히 코드포스보다 문제가 직관적이고 쓸데 없는 스토리텔링이 없어서 좋았다.
스코어 계산 방식이 달라서 문제 푼 시간이 초 단위로 반영되기 때문에 시간 줄이기에 더 열심히 해야겠다고 생각했다.
개인적으로 코드포스보다 앳코더가 더 재밌는 것 같다. 특히 대회 시간이 길지 않아서 최고다.
728x90
반응형