Codeforces Round #691 (Div. 2) B. Move and Turn 풀이
문제 문제로 이동 Problem - B - Codeforces codeforces.com 목차 문제 설명 전형적인 규칙 찾는 문제이다. 개인적으로 A보다 쉬웠다. 2차원 좌표평면 가운데에서 로봇은 동, 서, 남, 북으로 1미터씩 움직일 수 있다. 단, 한쪽 방향만으로 갈 수는 없고 북쪽으로 한 칸 이동 했다면 그 다음엔 서, 동으로 이동 남쪽으로 한 칸 이동 했다면 그 다음엔 서, 동으로 이동 서쪽으로 한 칸 이동 했다면 그 다음엔 북, 남으로 이동 동쪽으로 한 칸 이동 했다면 그 다음엔 북, 남으로 이동해야 한다. 이 때 N 값 만큼 이동할 수 있는데, 로봇이 갈 수 있는 공간의 개수를 출력하라는 문제다. 자세한건 예시를 보자. 예시 그림으로 설명하자면 동, 서, 남, 북으로 이동하기 때문에 결과적으로..
byOnlineJudge··
Codeforces Round #691 (Div. 2) A. Red-Blue Shuffle 풀이
문제 문제로 이동 Problem - A - Codeforces codeforces.com 목차 문제 설명 두 수가 주어진다. 각 숫자의 위치를 바꾸는 여러가지 경우의 수 중 첫번째 수가 두번째 수보다 더 큰 확률이 높다면 RED를, 두번째 수가 첫번째 수보다 더 큰 확률이 높다면 BLUE를 같다면 EQUAL을 출력하라. 예시 위 입력 값으로 나오는 경우의 수는 아래와 같다. 1,2,3 순으로 나열 : 314>159 RED 1,3,2 순으로 나열 : 341>195 RED 2,1,3 순으로 나열 : 1342,3,1 순으로 나열 : 1433,1,2 순으로 나열 : 4313,2,1 순으로 나열 : 413RED 2, BLUE 4로 BLUE가 출력된다. 규칙 굳이 모든 수를 바꿔가며 비교할 필요가 없다. RED :..
byOnlineJudge··
백준 2042 구간 합 구하기/세그먼트트리
문제로 이동 목차 문제 설명 구간합 문제다. 이 게시물에서는 세그먼트 트리를 이용해 해결한다. 충분히 단순 반복문으로 해결할 수 있지만 그런 경우, 구간 합을 구하는데 O(n)이 걸린다. 이런 과정이 M번 반복된다면 O(MN)이 된다. 구간합 뿐만 아니라 특정 위치의 수를 변경시키는 기능도 있다. 해당 위치의 수가 바뀌면 그보다 큰 위치의 합도 모두 변경해야 하므로 TLE가 날 수 밖에 없다. 세그먼트 트리를 이용하면 O(Mlog(N))으로 해결할 수 있다. 소스 코드 소스코드 import sys input = sys.stdin.readline tree = list() nodes = list() #ChangeIdx : 수정할 인덱스, ChangeNum : 수정할 숫자 def update(start, en..
byOnlineJudge··
Educational Codeforces Round 100 (Rated for Div. 2) B. Find The Array 풀이
문제 문제로 이동 Problem - B - Codeforces codeforces.com 문제 설명 입력되는 수열을 A, 새로 생성 해야하는 수열을 B라고 두자. 위와 같은 조건이 주어진다. 위의 조건을 만족하는 B를 출력해야 한다. 이게 어떤 의미인지 예시에서 알아보자. 예시 S : A배열의 총합 조건 : 같은 인덱스 끼리의 차이(절대값)의 합 * 2가 S보다 작거나 같아야 한다. B의 총 합이 A의 총 합(S)보다 작다면 성립이 된다. 하지만 문제설명에서 언급했듯이 주의해야 할 점이 있다. 주의해야할 점 1. B_i와 B_i+1는 서로 나눠지는 관계다. 즉, 한쪽은 약수 반대쪽은 배수가 되어야 한다. 이 조건을 만족하는 수는 바로 2의 제곱수이다. 규칙 A_i 보다 작은 2의 제곱수 B_i를 만들면 ..
byOnlineJudge··
Educational Codeforces Round 100 (Rated for Div. 2) A.Dungeon
문제로 이동 Problem - A - Codeforces codeforces.com 목차 문제 설명 몬스터 세 마리의 체력이 주어진다. 이 몬스터를 죽이기 위해서(체력을 모두 0으로 만든다) 공격을 해야한다. 공격은 단일공격 6회, 전체공격 1회를 반복할 수 있다. 즉, 1~6회 공격은 한 마리에게만 데미지가 들어가고, 7회째 공격은 세 몬스터에게 데미지가 들어간다. 몬스터가 모두 동시에 죽는다면 YES를 그렇지 않으면 NO를 출력한다. 예시 설명 위 그림처럼 3, 2, 4라는 체력을 가진 몬스터가 주어졌다고 생각해보자. 최종적으로 7회차 공격(전체 공격)때 세 몬스터의 체력이 동시에 0이 되면서 죽이기에 성공한다. 출력은 YES가 될 것이다. 주의해야할 점 위 예시는 7회차만에 공격이 끝난다. 하지만 ..
byOnlineJudge··
백준 5676 음주코딩/세그먼트트리
문제로 이동 5676번: 음주 코딩 각 테스트 케이스마다 곱셈 명령의 결과를 한 줄에 모두 출력하면 된다. 출력하는 i번째 문자는 i번째 곱셈 명령의 결과이다. 양수인 경우에는 +, 음수인 경우에는 -, 영인 경우에는 0을 출력한다. www.acmicpc.net 목차 너무도 흔한 세그먼트 트리 문제이다. 하지만, 주의해야 할 부분이 몇 가지 있다. 주의해야 할 점 1. 구간곱 문제이므로 수가 커진다. 하지만, 이 문제에서는 음,양,0만 판별하면 되므로 모든 수를 -1, 0, 1로 바꿔준다. 2. 문제에 TC(테스트 케이스)가 주어지지 않았다. C++에선 while scanf 사용이 가능하지만 Python3에서는 다른 방법을 사용한다. TC가 주어지지 않는 경우 Python3에서는 Try - Except ..
byOnlineJudge··
불러오는 중...