25635번: 자유 이용권
자유 이용권은 놀이공원의 모든 놀이기구를 횟수의 제한 없이 마음껏 이용할 수 있는 이용권이다. 준원이는 ANA 놀이공원의 자유 이용권을 구매했고, 최대한 많이 놀이기구를 이용할 생각이다.
www.acmicpc.net
[문제 풀이]
만약 같은 놀이기구를 이용할 수 있다면 모든 횟수를 더해주면 그만이지만, 같은 놀이기구를 매번 이용할수 없다는 제한사항이 있다. 우리가 찾아야 할 것은 가장 큰 사용 횟수를 가진 놀이기구였다.왜? 가장 큰 횟수의 놀이기구를 모두 탈 수 있을까? 아닐까? 라는 고민을 시작한 이유는 같은 놀이기구를 매번 탈 수 는없지만, 사실 2개의 놀이기구만 있어도 돌아가면서 탈 수 있다. 이것을 가장 큰 횟수를 가진 놀이기구를 다른 놀이기구와 번갈아 타면서 탄다면? 이라는 생각이 문득 들었다.
그렇기 때문에 가장 큰 횟수를 가진 놀이기구와 그렇지 않은 놀이기구의 횟수의 합을 비교하면 값은 매우 간단하다.
[코드]
import java.io.*; import java.util.Arrays; import java.util.StringTokenizer; class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int N = Integer.parseInt(br.readLine()); long[] count = new long[N]; long sum = 0; StringTokenizer st = new StringTokenizer(br.readLine()); for (int i = 0; i < N; i++) count[i] = Long.parseLong(st.nextToken()); Arrays.sort(count); for (int i = 0; i < N - 1; i++) sum += count[i]; if (sum > count[N - 1]) bw.write(sum + count[N - 1] + ""); else if (sum < count[N - 1]) bw.write(sum * 2 + 1 + ""); else bw.write(sum * 2 + ""); bw.close(); } } |
'백준' 카테고리의 다른 글
[백준/JAVA] 14267번: 회사 문화 1 (0) | 2023.02.17 |
---|---|
[백준/JAVA] 1261번: 알고스팟 (0) | 2023.02.14 |
[백준/JAVA] 1285번: 동전 뒤집기 (0) | 2023.02.13 |
[백준/JAVA] 4055번: 파티가 좋아 파티가 좋아 (0) | 2023.02.10 |
[백준/JAVA] 3064번: Minesweeper (0) | 2023.02.09 |