2025. 5. 8. 13:05ㆍDiamond/Diamond III
굉장히 오랜만에 블로그에 글을 쓰는 느낌이다. 대학원생이 된 이후로 바빠서 문제를 풀더라도 블로그에 글을 쓸 시간이 안 났다. 짬이 생긴 터라 오늘 푼 문제의 풀이를 작성한다.
이 문제를 품으로서 수학 태그레이팅이 2600에 도달했다. 2700까지 올리고는 싶으나 아직 내가 그럴 만한 체급이 안 되는 것 같기도 하다. 천천히 올리자. 급하게 하지 말고.
문제
두 음이 아닌 정수
음이 아닌 정수로 구성된 길이
입력
첫째 줄에 음이 아닌 정수
둘째 줄에 정수열의 원소를 나타내는
예제 입력)
# 예제 1
2
0 1 1 2
# 예제 2
2
0 1 1 3
출력
만약 문제의 조건을 만족하는
예제 출력)
# 예제 1
-1
# 예제 2
1 2
내 코드
N,*a = map(int,open(0).read().split())
for mask in range(1<<N):
for i in range(N-1):
for j in range(i+1,N):
if 0 == mask & (1<<i):
if 0 == mask & (1<<j):
I,J = mask+(1<<i),mask+(1<<j)
iorj = I+J-mask
if a[I]+a[J] < a[mask]+a[iorj]:
print(I,J); exit(0)
print(-1)
매우 풀이가 아름다운데, 그에 비해 구현량은 무시할 수 있을 정도로 짧다. 누군가는 마음에 안 들어하는 유형의 문제겠지만 나는 매우 좋다. 이런 문제가 더 많아졌으면 좋겠다.
이
이로서 21768번의 풀이를 마친다.
'Diamond > Diamond III' 카테고리의 다른 글
BOJ 3904 - The Teacher's Side of Math (Python3) (0) | 2024.10.01 |
---|---|
BOJ 13949 - 쉬운 문제 (Python3) (0) | 2024.01.12 |