[λ°±μ€ / BOJ 12782] λΉνΈ μ°μ μ§μ
https://www.acmicpc.net/problem/12782
12782λ²: λΉνΈ μ°μ μ§μ
μ§νμ΄λ μ«μλ₯Ό μ’μνλ€. μ€λλ μ«μλ₯Ό κ°μ§κ³ λλ μ§νμ΄λ λ μ«μμ λΉνΈ μ°μ μ§μλ₯Ό ꡬν΄λ³΄μλ€. λΉνΈ μ°μ μ§μλ, 10μ§λ²μΌλ‘ λνλΈ λ μ μλ₯Ό μ΄μ§μλ‘ λνλ΄μμ λ, λ μ«μλ₯Ό κ°
www.acmicpc.net
λ¬Έμ
μ§νμ΄λ μ«μλ₯Ό μ’μνλ€. μ€λλ μ«μλ₯Ό κ°μ§κ³ λλ μ§νμ΄λ λ μ«μμ λΉνΈ μ°μ μ§μλ₯Ό ꡬν΄λ³΄μλ€. λΉνΈ μ°μ μ§μλ, 10μ§λ²μΌλ‘ λνλΈ λ μ μλ₯Ό μ΄μ§μλ‘ λνλ΄μμ λ, λ μ«μλ₯Ό κ°κ² λ§λλλ° νμν μ΅μ μ°μ° νμλ₯Ό λ§νλ€. μ°μ°μ μ’ λ₯λ λ€μκ³Ό κ°λ€.
- νλμ μ΄μ§μμμ μμμ μ리μ μ«μλ₯Ό 0 λλ 1λ‘ λ°κΎΌλ€.
- νλμ μ΄μ§μμμ μλ‘ λ€λ₯Έ μ리μ μλ λ μ«μμ μμΉλ₯Ό λ°κΎΌλ€.
μλ₯Ό λ€μ΄, 10μ§μ 11κ³Ό 12μ λΉνΈ μ°μ μ§μλ₯Ό ꡬν΄λ³΄μ. 11μ μ΄μ§μλ‘ λνλ΄λ©΄ 1011μ΄κ³ , 12λ₯Ό μ΄μ§μλ‘ λνλ΄λ©΄ 1100μ΄λ€. 1011μμ 2μ μ리λ₯Ό 0μΌλ‘ λ°κΎΈκ³ (1011 -> 1001), 1μ μ리μ 4μ μ리μ μ«μλ₯Ό μλ‘ λ°κΎΈλ©΄(1001 -> 1100) 1100μ΄ λλ€. μ¦, 1011μ 1100μΌλ‘ λ°κΎΈλ μ΅μ μ°μ° νμλ λ λ²μΌλ‘, 11κ³Ό 12μ λΉνΈ μ°μ μ§μλ 2κ° λλ€.
μ§νμ΄λ μ΄λ€ λ μκ° μ£Όμ΄μ‘μ λ λ μμ λΉνΈ μ°μ μ§μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ λ§λ€κ³ μΆλ€. νμ§λ§, μμ½κ²λ μ§νμ΄λ νλ‘κ·Έλλ°μ μ½ν΄ 10μ§μλ₯Ό μ΄μ§μλ‘ λ°κΎΈλ κ² λ°μ νμ§ λͺ»νλ€. μ¬λ¬λΆμ΄ μ§νμ΄λ₯Ό λμ λ μμ λΉνΈ μ°μ μ§μλ₯Ό ꡬνλ νλ‘κ·Έλ¨μ λ§λ€μ΄ μ£Όμ!
μ λ ₯
μ λ ₯μ 첫 μ€μλ ν μ€νΈ μΌμ΄μ€μ κ°μ T(1 ≤ T ≤ 50)κ° μ£Όμ΄μ§λ€.
κ° ν μ€νΈμΌμ΄μ€μ 첫 λ²μ§Έ μ€μλ λ μ΄μ§μ N, Mμ΄ μ£Όμ΄μ§λ€. N, Mμ μλ¦Ώμλ 1,000,000μ λμ§ μμΌλ©°, μλ¦Ώμλ μλ‘ κ°λ€.
μΆλ ₯
κ° ν μ€νΈ μΌμ΄μ€λ§λ€ λ μμ λΉνΈ μ°μ μ§μλ₯Ό μΆλ ₯νλ€.
νμ΄
bit_1 | 1 | 0 | 1 | 1 |
bit_2 | 1 | 1 | 0 | 0 |
λ μμ κ° λΉνΈλ€μ λΉκ΅νλ©΄μ λ€λ₯Ό λ, bit_1μ 1μ κ°―μ(cntOne)μ 0μ κ°―μ(cntZero)λ₯Ό λ°λ‘ μ μ₯νλ€. cntOneκ³Ό cntZero μ€ λ μμ κ° λ§νΌ κ΅νν΄μ£Όκ³ λλ¨Έμ§λ λ°λκ°μΌλ‘ λ°κΎΈμ΄μ£Όλ©΄ κ°λ¨νκ² κ°μ μ°Ύμ μ μλ€.
μ μμμμλ cntOneμ 2, cntZeroλ 1μ΄λ€. λ μμ κ°μ 1μ΄λ―λ‘ 1λ² 1κ³Ό 0μ κ΅νν΄μ€λ€. κ·Έλ¦¬κ³ cntOne - cntZero λ² 1μ 0μΌλ‘ λ°κΎΈμ΄ μ£Όμλ€.
μ½λ
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main_BOJ_12782_λΉνΈμ°μ μ§μ { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); StringTokenizer stringTokenizer; int testCase = Integer.parseInt(br.readLine()); while(testCase-- > 0){ stringTokenizer = new StringTokenizer(br.readLine()); char[] bit1 = stringTokenizer.nextToken().toCharArray(); char[] bit2 = stringTokenizer.nextToken().toCharArray(); int cntOne = 0; int cntZero = 0; for(int i = 0; i < bit1.length; i++){ if(bit1[i] != bit2[i]){ if(bit1[i] == '1') cntOne++; else cntZero++; } } if(cntZero < cntOne){ sb.append(cntZero + (cntOne - cntZero)).append("\n"); } else if(cntOne < cntZero){ sb.append(cntOne + (cntZero - cntOne)).append("\n"); } else{ sb.append(cntOne).append("\n"); } } System.out.print(sb); } }