본문 바로가기

Codeforces4

코드포스 (Codeforces Round #765(Div.2)) A. Ancient Civilization [문제설명] 과학자들이 목성의 위성인 가니메데(Ganymede) 고대문명을 발견하였다. 그 고대문명의 언어는 2개의 알파벳을 사용하고 각 단어는 정확하게 길이가 ℓ이다. 그래서 이 언어의 각 단어를 0에서 2ℓ-1까지의 정수로 쓰기로 하였다. 주어지는 단어에 대하여 '규칙'을 만족하는 단어 y를 찾아야 한다. 단어의 왼쪽부터 오른쪽으로 거리를 구한다. 1001(2)와 1100(2)인 두 단어 사이의 거리는 2이다. 좌에서 우로 볼 때 2번과 4번이 서로 다르기 때문에 거리가 2이다. 주어지는 단어들과 찾아내야하는 단어인 y의 거리는 최소가 되어야하고, y의 값도 최소가 되어야 한다. 주어진 정수를 2진법으로 바꿔준다. 2진법으로 바꾼 정수를 위에서 아래로 1열로 세운뒤 각 자리마다 1이 많이 있는지 0이.. 2022. 1. 19.
코드포스 (Codeforces Round #764 (Div. 3)) A. Plus One on the Subset [문제설명] 정수배열이 주어진다. 정수 배열 안에있는 정수들에게 1을 더하는 '행동'을 할 수 있다. 정수배열에 있는 수가 모두 같아지기위한 최소 '행동' 수를 구하여라. 간단하게 정수배열에서 가장 작은수가 가장 큰수까지 가려면 '행동'을 몇번 하면 되는지 세기만 하면 된다. # Python # 테스트 케이스 개수 t= int(input()) for _ in range(t): # n, 정수배열 입력 n= int(input()) arr = list(map(int, input().split())) # 정수배열을 정렬하고 가장 큰 수에서 작은수를 빼주면 된다. arr.sort() print(arr[n-1]-arr[0]) 2022. 1. 18.
코드포스 (Hello 2022) A. Stable Arrangement of Rooks [문제설명] N개의 정수가 주어진다. N x N의 체스판이 생성된다. 체스말 중에서 룩(rook)이 체스판 k개 만큼 체스판 위에 올라가있다. 룩은 같은 열 또는 행에있는 다른 룩을 죽일 수 있다. 룩이 서로 죽이지 못하는 상태를 "좋은배열"이라고 부른다. "좋은배열"에서 만약 룩이 인접한 칸으로 움직였을 때에도 "좋은배열"상태이면 "안정적인 상태"라고 부르고, 서로를 죽이는 상황이 나오면 "불안정한 상태"라고 부른다. (인접한 칸은 상하좌우에 있는 칸을 말한다) k개의 룩이 주어졌을 때 N x N체스판에서 "안정적인 상태"를 아무거나 찾아내거나 찾아낼 수 없다면 -1을 출력하여라. "안정적인 상태"를 아무거나 찾아내서 보여주면 됨으로 모든 경우의 수를 다 생각하지 않아도 된다. k값이 2부터 점점 늘어.. 2022. 1. 5.
코드포스 (Good Bye 2021: 2022 is NEAR) A. Integer Diversity A. Integer Diversity [문제설명] N개의 정수가 주어진다. 정수에 음수를 부여할 수 있다. 이 정수 배열에서 각기다른 숫자의 값의 최대값을 구하여라. 예를 들어, [1 2 1 2 2]인 정수 배열은 각기다른 숫자의 값이 2개이다. 1 2가 2개이상 중복되므로 하나씩 음수로 변환시키면 [1 -1 2 -2 2]로 볼 수 있다. 이 배열은 각기다른 숫자의 값이 4개이다.(원소의 수는 5개이지만 2가 2개이므로 겹친다) [1 1 -1 2 2 -2]인 정수 배열은 중복되는 값을 음수로 변환시켜도 어짜피 겹침으로 이 배열도 마찬가지로 각기다른 숫자의 값이 4개이다. # 테스트 케이스 개수 t = int(input()) for p in range(t): #테스트 케이스에 사용되는 원소의 수 n=int.. 2021. 12. 31.