ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๊ณ ๋“์  kit ์ˆซ์ž์•ผ๊ตฌ
    Algo Rhythm๐Ÿ•บ๐Ÿ’ƒ/Programmers 2020. 7. 9. 20:12

    ๐Ÿ“š ๋ฌธ์ œ ์„ค๋ช…

    ์ˆซ์ž ์•ผ๊ตฌ ๊ฒŒ์ž„์ด๋ž€ 2๋ช…์ด ์„œ๋กœ๊ฐ€ ์ƒ๊ฐํ•œ ์ˆซ์ž๋ฅผ ๋งž์ถ”๋Š” ๊ฒŒ์ž„์ž…๋‹ˆ๋‹ค. ๊ฒŒ์ž„ํ•ด๋ณด๊ธฐ

    ๊ฐ์ž ์„œ๋กœ ๋‹ค๋ฅธ 1~9๊นŒ์ง€ 3์ž๋ฆฌ ์ž„์˜์˜ ์ˆซ์ž๋ฅผ ์ •ํ•œ ๋’ค ์„œ๋กœ์—๊ฒŒ 3์ž๋ฆฌ์˜ ์ˆซ์ž๋ฅผ ๋ถˆ๋Ÿฌ์„œ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ† ๋Œ€๋กœ ์ƒ๋Œ€๊ฐ€ ์ •ํ•œ ์ˆซ์ž๋ฅผ ์˜ˆ์ƒํ•œ ๋’ค ๋งžํž™๋‹ˆ๋‹ค.

     

    * ์ˆซ์ž๋Š” ๋งž์ง€๋งŒ, ์œ„์น˜๊ฐ€ ํ‹€๋ ธ์„ ๋•Œ๋Š” ๋ณผ
    * ์ˆซ์ž์™€ ์œ„์น˜๊ฐ€ ๋ชจ๋‘ ๋งž์„ ๋•Œ๋Š” ์ŠคํŠธ๋ผ์ดํฌ
    * ์ˆซ์ž์™€ ์œ„์น˜๊ฐ€ ๋ชจ๋‘ ํ‹€๋ ธ์„ ๋•Œ๋Š” ์•„์›ƒ

     

    ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์˜ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฉด

     

    A : 123
    B : 1์ŠคํŠธ๋ผ์ดํฌ 1๋ณผ.
    A : 356
    B : 1์ŠคํŠธ๋ผ์ดํฌ 0๋ณผ.
    A : 327
    B : 2์ŠคํŠธ๋ผ์ดํฌ 0๋ณผ.
    A : 489
    B : 0์ŠคํŠธ๋ผ์ดํฌ 1๋ณผ.

     

    ์ด๋•Œ ๊ฐ€๋Šฅํ•œ ๋‹ต์€ 324์™€ 328 ๋‘ ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

    ์งˆ๋ฌธํ•œ ์„ธ ์ž๋ฆฌ์˜ ์ˆ˜, ์ŠคํŠธ๋ผ์ดํฌ์˜ ์ˆ˜, ๋ณผ์˜ ์ˆ˜๋ฅผ ๋‹ด์€ 2์ฐจ์› ๋ฐฐ์—ด baseball์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ€๋Šฅํ•œ ๋‹ต์˜ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

     

    ์ œํ•œ์‚ฌํ•ญ

    • ์งˆ๋ฌธ์˜ ์ˆ˜๋Š” 1 ์ด์ƒ 100 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.

    • baseball์˜ ๊ฐ ํ–‰์€ [์„ธ ์ž๋ฆฌ์˜ ์ˆ˜, ์ŠคํŠธ๋ผ์ดํฌ์˜ ์ˆ˜, ๋ณผ์˜ ์ˆ˜] ๋ฅผ ๋‹ด๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

     

    ๐ŸŽฏ  ์–ด๋–ป๊ฒŒ ํ’€์—ˆ๋‚˜

    class Solution {
        public int solution(int[][] baseball) {
            int answer = 0;      
            
            for(int i = 123; i <= 987; i++) {
                int cHundred = i / 100;
                int cTen = (i / 10) % 10;
                int cOne = i % 10;
                boolean isQualified = true;
                
                if(cHundred == cTen || cTen == cOne || cOne == cHundred) continue;
                if(cTen == 0 || cOne == 0) continue;
             
                int[] cDigits = new int[3];
                cDigits[0] = cHundred;
                cDigits[1] = cTen;
                cDigits[2] = cOne;
            
                for(int j = 0; j < baseball.length; j++) {
                    int cS = 0, cB = 0;
                    
                    int n = baseball[j][0];
                    int nS = baseball[j][1];
                    int nB = baseball[j][2];
    
                    int[] nDigits = new int[3];
                    nDigits[0] = n / 100; // nHundred
                    nDigits[1] = (n / 10) % 10; // nTen
                    nDigits[2] = n % 10; // nOne
                    
                    // calc strike and ball
                    for(int a = 0; a < 3; a++) {
                        for(int b = 0; b < 3; b++) {
                            if(a == b && nDigits[a] == cDigits[b]) { cS++; }
                            if(a != b && nDigits[a] == cDigits[b]) { cB++; }
                        }
                    }
                    
                    if(cS != nS || cB != nB) {
                        isQualified = false;
                        break;                
                    }
                }
                
                if(isQualified) answer++;
            }
            
            return answer;
        }
    }

     

    ๐Ÿง ์™œ ์ €๋ ‡๊ฒŒ ํ’€์—ˆ๋‚˜

    ์‚ฌ์‹ค ์ด ๋ฌธ์ œ๋Š” ์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ์ž˜๋ชป ์ดํ•ดํ•ด์„œ ๋‘์‹œ๊ฐ„ ์ •๋„ ์‚ฝ์งˆ โ›โ›โ›ํ•˜๋‹ค๊ฐ€ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ๋ธ”๋กœ๊ทธ๋ฅผ ์ฐธ๊ณ ํ•ด์„œ ํ’€์—ˆ๋‹ค.๐Ÿ˜ญ

     

    ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ฐ„๋‹จํ•˜๋‹ค.

    ๊ฐ์ž ์„œ๋กœ ๋‹ค๋ฅธ 1~9๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์„ธ ์ž๋ฆฌ ์ˆ˜์˜ ๋ฒ”์œ„๋Š” [123, 987]์ด๋‹ค. ์ด ์ค‘ 0์„ ํฌํ•จํ•˜๊ฑฐ๋‚˜ ์ž๋ฆฌ ์ˆ˜๊ฐ€ ๊ฒน์น˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•œ ์ˆ˜๋“ค์„ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณธ๋‹ค. ์ด ์ˆ˜๋“ค์€ ๋ง๊ทธ๋Œ€๋กœ ํ›„๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์— ์•ž์œผ๋กœ ํ›„๋ณด์ˆ˜๋ผ๊ณ  ๋ถ€๋ฅด๊ฒ ๋‹ค.

     

    ํ›„๋ณด์ˆ˜์—์„œ ๋ฐฑ์˜ ์ž๋ฆฌ ์ˆ˜, ์‹ญ์˜ ์ž๋ฆฌ ์ˆ˜, ์ผ์˜ ์ž๋ฆฌ ์ˆ˜๋ฅผ ํŒŒ์•…ํ•œ๋‹ค.

    ๊ทธ๋ฆฌ๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง€๋Š” ๋ฐฐ์—ด baseball์„ ํ•˜๋‚˜์”ฉ ์‚ดํŽด๋ณธ๋‹ค.

    baseball์—์„œ ์„ธ ์ž๋ฆฌ ์ˆ˜ n, ์ŠคํŠธ๋ผ์ดํฌ ์ˆ˜ nS, ๋ณผ ์ˆ˜ nB๋ฅผ ํŒŒ์•…ํ•œ๋‹ค.

     

    ๊ทธ๋Ÿผ ์ด์ œ ํ›„๋ณด์ˆ˜์™€ n์„ ๋น„๊ตํ–ˆ์„๋•Œ์˜ ์ŠคํŠธ๋ผ์ดํฌ ์ˆ˜์™€ ๋ณผ ์ˆ˜๊ฐ€ ๊ฐ๊ฐ nS, nB์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ฉด ๋œ๋‹ค. ์ƒ๊ฐํ•ด๋ณด๋ฉด ๊ฐ™์€ ์ž๋ฆฌ ์ˆ˜์—์„œ ํ›„๋ณด์ˆ˜์™€ n์ด ์ˆซ์ž๊ฐ€ ๊ฐ™์œผ๋ฉด ์ŠคํŠธ๋ผ์ดํฌ์ด๊ณ  ๋‹ค๋ฅธ ์ž๋ฆฌ ์ˆ˜์—์„œ ํ›„๋ณด์ˆ˜์™€ n์ด ์ˆซ์ž๊ฐ€ ๊ฐ™์œผ๋ฉด ๋ณผ์ด๋‹ค. ์ด๋ฅผ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

     

     // calc strike and ball
    for(int a = 0; a < 3; a++) {
    	for(int b = 0; b < 3; b++) {
    		if(a == b && nDigits[a] == cDigits[b]) { cS++; }
    		if(a != b && nDigits[a] == cDigits[b]) { cB++; }
    	}
    }

     

    ๋งŒ์•ฝ ํ›„๋ณด์ˆ˜๊ฐ€ ๋ชจ๋“  baseball์— ๋Œ€ํ•ด ๋งŒ์กฑํ•˜๋ฉด answer๋ฅผ 1 ์ฆ๊ฐ€ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งŒ์•ฝ ์ŠคํŠธ๋ผ์ดํฌ ์ˆ˜, ๋ณผ ์ˆ˜์™€ nS, nB๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๋‹ค๋ฅธ ๊ฒƒ๋“ค์„ ๋ณผ ํ•„์š”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•˜๊ณ  ๋‹ค์Œ ํ›„๋ณด์ˆ˜๋ฅผ ์‚ดํŽด๋ณธ๋‹ค.

     

    ๐Ÿ“–  ๋ฌด์—‡์„ ๋ฐฐ์› ๋‚˜

    ๋ฌธ์ œ๋ฅผ ์ฒœ์ฒœํžˆ ๊ผผ๊ผผ์ด ์ฝ์ž ์ œ๋ฐœ ๐Ÿ˜ญ๐Ÿ˜ญ๐Ÿ˜ญ

    ๋Œ“๊ธ€

Designed by Tistory.