Skip to content

Commit 7460381

Browse files
committed
[Silver III] Title: 타노스, Time: 112 ms, Memory: 14232 KB, Score: 25 point -BaekjoonHub
1 parent ed20dde commit 7460381

2 files changed

Lines changed: 67 additions & 0 deletions

File tree

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# [Silver III] 타노스 - 20310
2+
3+
[문제 링크](https://www.acmicpc.net/problem/20310)
4+
5+
### 성능 요약
6+
7+
메모리: 14232 KB, 시간: 112 ms
8+
9+
### 분류
10+
11+
그리디 알고리즘, 문자열
12+
13+
### 제출 일자
14+
15+
2026년 3월 7일 20:18:56
16+
17+
### 문제 설명
18+
19+
<p>어느 날, 타노스는 0과 1로 이루어진 문자열 <mjx-container class="MathJax" jax="CHTML" style="font-size: 109%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D446 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>S</mi></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$S$</span></mjx-container>를 보았다. 신기하게도, <mjx-container class="MathJax" jax="CHTML" style="font-size: 109%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D446 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>S</mi></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$S$</span></mjx-container>가 포함하는 0의 개수와 <mjx-container class="MathJax" jax="CHTML" style="font-size: 109%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D446 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>S</mi></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$S$</span></mjx-container>가 포함하는 1의 개수는 모두 짝수라고 한다.</p>
20+
21+
<p>갑자기 심술이 난 타노스는 <mjx-container class="MathJax" jax="CHTML" style="font-size: 109%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D446 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>S</mi></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$S$</span></mjx-container>를 구성하는 문자 중 절반의 0과 절반의 1을 제거하여 새로운 문자열 <mjx-container class="MathJax" jax="CHTML" style="font-size: 109%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-msup><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D446 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align: 0.363em; margin-left: 0.052em;"><mjx-mo class="mjx-var" size="s"><mjx-c class="mjx-c2032"></mjx-c></mjx-mo></mjx-script></mjx-msup></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><msup><mi>S</mi><mo data-mjx-alternate="1">′</mo></msup></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$S'$</span></mjx-container>를 만들고자 한다. <mjx-container class="MathJax" jax="CHTML" style="font-size: 109%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-msup><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D446 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align: 0.363em; margin-left: 0.052em;"><mjx-mo class="mjx-var" size="s"><mjx-c class="mjx-c2032"></mjx-c></mjx-mo></mjx-script></mjx-msup></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><msup><mi>S</mi><mo data-mjx-alternate="1">′</mo></msup></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$S'$</span></mjx-container>로 가능한 문자열 중 사전순으로 가장 빠른 것을 구하시오.</p>
22+
23+
### 입력
24+
25+
<p>문자열 <mjx-container class="MathJax" jax="CHTML" style="font-size: 109%; position: relative;"><mjx-math class="MJX-TEX" aria-hidden="true"><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D446 TEX-I"></mjx-c></mjx-mi></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><mi>S</mi></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$S$</span></mjx-container>가 주어진다.</p>
26+
27+
### 출력
28+
29+
<p><mjx-container class="MathJax" jax="CHTML" style="font-size: 109%; position: relative;"> <mjx-math class="MJX-TEX" aria-hidden="true"><mjx-msup><mjx-mi class="mjx-i"><mjx-c class="mjx-c1D446 TEX-I"></mjx-c></mjx-mi><mjx-script style="vertical-align: 0.363em; margin-left: 0.052em;"><mjx-mo class="mjx-var" size="s"><mjx-c class="mjx-c2032"></mjx-c></mjx-mo></mjx-script></mjx-msup></mjx-math><mjx-assistive-mml unselectable="on" display="inline"><math xmlns="http://www.w3.org/1998/Math/MathML"><msup><mi>S</mi><mo data-mjx-alternate="1">′</mo></msup></math></mjx-assistive-mml><span aria-hidden="true" class="no-mathjax mjx-copytext">$S'$</span></mjx-container>로 가능한 문자열 중 사전순으로 가장 빠른 것을 출력한다.</p>
30+
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import java.io.*;
2+
import java.util.*;
3+
4+
public class Main {
5+
6+
public static void main(String[] args) throws Exception{
7+
char[] origin = inputSetting();
8+
String[] halfRemove = removeZeroAndOneHalf(origin);
9+
Arrays.sort(halfRemove);
10+
11+
System.out.println(String.join("", halfRemove));
12+
}
13+
14+
private static String[] removeZeroAndOneHalf(char[] origin){
15+
StringBuilder sb = new StringBuilder();
16+
HashMap<Character, Integer> map = new HashMap<>();
17+
18+
for (int i = 0; i < origin.length; i++) {
19+
if(map.containsKey(origin[i])) map.put(origin[i], map.get(origin[i]) + 1);
20+
else map.put(origin[i], 1);
21+
}
22+
23+
for(Map.Entry<Character, Integer> entry : map.entrySet()){
24+
if(entry.getKey() == '0' || entry.getKey() == '1') entry.setValue(entry.getValue() / 2);
25+
26+
for(int i = 0; i < entry.getValue(); i++) {
27+
sb.append(entry.getKey());
28+
}
29+
}
30+
return sb.toString().split("");
31+
}
32+
33+
private static char[] inputSetting() throws Exception {
34+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
35+
return br.readLine().toCharArray();
36+
}
37+
}

0 commit comments

Comments
 (0)