fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 28282 (C++) 운명
최초 업로드: 2025-09-06 12:58:04
최근 수정 시간: 2025-09-06 12:58:22
게시자: rlatjwls3333
카테고리: 백준
조회수: 5
# [Silver V] 운명 [문제 링크](https://www.acmicpc.net/problem/28282) ## 문제 설명 <p>동원이는 $2X$개의 양말을 가지고 있다. $1$번째 ~ $X$번째 양말은 왼발에 신을 수 있는 양말이고, $X+1$번째 ~ $2X$번째 양말은 오른발에 신을 수 있는 양말이다.</p> <p>양말의 색은 총 $K$가지 존재하고, 각각 $1$번 색, $2$번 색, $\cdots$, $K$번 색이라고 부른다. $i$번째 양말의 색은 $A_i$번 색이다.</p> <p>동원이는 왼발 양말 하나와 오른발 양말 하나를 신고 나가려 한다. 양쪽 발에 신는 양말의 색은 달라야 한다. 동원이가 이와 같이 양말을 신고 가는 경우의 수는?</p> ## 입력 <p>첫째 줄에 양말의 개수 $X$와 양말의 색의 가짓수 $K$가 공백을 사이에 두고 주어진다.</p> <p>둘째 줄에 각 양말의 색의 번호를 나타나는 $2X$개의 수 $A_1, A_2, \cdots, A_{2X}$가 공백을 사이에 두고 주어진다.</p> ## 출력 <p>양쪽 발에 신는 양말의 색이 다르도록 동원이가 양말을 신고 가는 경우의 수를 출력하라. 답의 크기가 32비트 정수형의 범위를 초과할 수 있음에 유의하라.</p> ## 풀이 한쪽 신발의 모든 색상의 수를 기록한 후 다른 쪽 신발을 보며 그 색만 제외하고 세면 됩니다. ``` c++ #include<bits/stdc++.h> using namespace std; typedef long long ll; ll a[200'001], cnt[10'001]; int main() { ios::sync_with_stdio(0); cin.tie(0); int x, k; cin >> x >> k; for(int i=0;i<x;i++) cin >> a[i]; for(int i=0;i<x;i++) { int color; cin >> color; cnt[color]++; } ll total=0; for(int i=0;i<x;i++) { total += x-cnt[a[i]]; } cout << total; } ```