[코드포스] Codeforces Round #676 (Div. 2)
대회 링크: codeforces.com/contest/1421
A번 문제: codeforces.com/contest/1421/problem/A
문제 제목이 정답이다. 단순히 a xor b를 출력하면 정답이 된다.
#include <bits/stdc++.h>
using namespace std;
int main() {
int testCase;
cin >> testCase;
for (int tc = 0; tc < testCase; tc++) {
unsigned int a, b;
cin >> a >> b;
cout << (a ^ b) << '\n';
}
}
B번 문제: codeforces.com/contest/1421/problem/B
이 문제는 S와 F의 위치에서 인접한 2칸씩만 확인하면 된다. 아래 그림에서 색칠한 부분이 이에 해당한다. 이 아이디어를 떠올릴 수 있으면 문제를 해결할 수 있다.
C번 문제: codeforces.com/contest/1421/problem/C
이 문제에서는 두 가지의 연산을 허용한다.
① L 연산
왼쪽에서 두 번째 인덱스부터 i까지의 문자열을 뒤집어 왼쪽에 붙이는 연산
② R 연산
오른쪽에서 두 번째 인덱스부터 i까지의 문자열을 뒤집어 오른쪽에 붙이는 연산
이것저것 생각하다 보면 다음의 세 연산으로 정답 판정을 받을 수 있다는 것을 알 수 있다.
data = input()
n = len(data)
print(3)
print("L", n - 1)
print("R", n - 1)
print("R", 2 * n - 1)
예시를 들어 그리자면 다음과 같다.
※ 첫 번째 연산 ※
※ 두 번째 연산 ※
※ 세 번째 연산 ※
D번 문제: codeforces.com/contest/1421/problem/D
이 문제는 대략 다음과 같은 코드로 정답 판정을 받을 수 있다. 먼저 6가지 방향에 대해서 최소 거리를 계산한 뒤에, 실제로 6가지 이동 연산을 이용하여 목표 지점까지의 최소 거리를 출력하면 정답이다.
for _ in range(int(input())):
x, y = map(int, input().split())
c1, c2, c3, c4, c5, c6 = map(int, input().split())
# 6가지 방향에 대한 이동 거리 최적화
c1 = min(c1, c2 + c6)
c2 = min(c2, c1 + c3)
c3 = min(c3, c2 + c4)
c4 = min(c4, c3 + c5)
c5 = min(c5, c4 + c6)
c6 = min(c6, c1 + c5)
# 최단 경로 계산하기
'알고리즘 대회' 카테고리의 다른 글
[코드포스] Codeforces Round #690 (Div. 3) (0) | 2020.12.30 |
---|---|
[코드포스] Codeforces Round #678 (Div. 2) (0) | 2020.10.25 |
알고리즘 대회(Competitive Programming)에서 애드혹(Ad-Hoc) 문제란? (0) | 2020.10.18 |
코드포스(Codeforces) 사이트에서 점수 변화와 퍼포먼스를 보여주는 크롬 확장 프로그램 (0) | 2020.10.18 |
[코드포스] Grakn Forces 2020 (0) | 2020.10.01 |