๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Programmers lv-0

์™ธ๊ณ„์–ด ์‚ฌ์ „ - Java [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ž…๋ฌธ]

by ๊ทคํ”ผํ‚ค 2022. 11. 28.

 

โค๏ธ Problem

๋”๋ณด๊ธฐ
  • ๋ฌธ์ œ
    PROGRAMMERS-962 ํ–‰์„ฑ์— ๋ถˆ์‹œ์ฐฉํ•œ ์šฐ์ฃผ๋น„ํ–‰์‚ฌ ๋จธ์“ฑ์ด๋Š” ์™ธ๊ณ„ํ–‰์„ฑ์˜ ์–ธ์–ด๋ฅผ ๊ณต๋ถ€ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์•ŒํŒŒ๋ฒณ์ด ๋‹ด๊ธด ๋ฐฐ์—ด spell๊ณผ ์™ธ๊ณ„์–ด ์‚ฌ์ „ dic์ด ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. spell์— ๋‹ด๊ธด ์•ŒํŒŒ๋ฒณ์„ ํ•œ๋ฒˆ์”ฉ๋งŒ ๋ชจ๋‘ ์‚ฌ์šฉํ•œ ๋‹จ์–ด๊ฐ€ dic์— ์กด์žฌํ•œ๋‹ค๋ฉด 1, ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด 2๋ฅผ returnํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

  • ์ œํ•œ ์‚ฌํ•ญ
    • spell๊ณผ dic์˜ ์›์†Œ๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค.
    • 2 ≤ spell์˜ ํฌ๊ธฐ ≤ 10
    • spell์˜ ์›์†Œ์˜ ๊ธธ์ด๋Š” 1์ž…๋‹ˆ๋‹ค.
    • 1 ≤ dic์˜ ํฌ๊ธฐ ≤ 10
    • 1 ≤ dic์˜ ์›์†Œ์˜ ๊ธธ์ด ≤ 10
    • spell์˜ ์›์†Œ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด ๋‹จ์–ด๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • spell์˜ ์›์†Œ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด๋Š” dic์— ๋‘ ๊ฐœ ์ด์ƒ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
    • dic๊ณผ spell ๋ชจ๋‘ ์ค‘๋ณต๋œ ์›์†Œ๋ฅผ ๊ฐ–์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

  • ์ž…์ถœ๋ ฅ ์˜ˆ & ์„ค๋ช…
no spell dic result
1 ["p", "o", "s"] ["sod", "eocd", "qixm", "adio", "soo"] 2
2 ["z", "d", "x"] ["def", "dww", "dzx", "loveaw"] 1
3 ["s", "o", "m", "d"] ["moos", "dzx", "smm", "sunmmo", "som"] 1
  1. "p", "o", "s" ๋ฅผ ์กฐํ•ฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด๊ฐ€ dic์— ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 2๋ฅผ returnํ•ฉ๋‹ˆ๋‹ค.
  2. "z", "d", "x" ๋ฅผ ์กฐํ•ฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด "dzx"๊ฐ€ dic์— ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 1์„ returnํ•ฉ๋‹ˆ๋‹ค.
  3. "s", "o", "m", "d" ๋ฅผ ์กฐํ•ฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด๊ฐ€ dic์— ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 2์„ returnํ•ฉ๋‹ˆ๋‹ค.

 

[์œ ์˜์‚ฌํ•ญ] ์ž…์ถœ๋ ฅ ์˜ˆ #3 ์—์„œ "moos", "smm", "som"๋„ "s", "o", "m", "d" ๋ฅผ ์กฐํ•ฉํ•ด ๋งŒ๋“ค ์ˆ˜ ์žˆ์ง€๋งŒ spell์˜ ์›์†Œ๋ฅผ ๋ชจ๋‘ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋‹ต์ด ์•„๋‹™๋‹ˆ๋‹ค.

 


 

 

๐Ÿ’› Solution

ํ’€์ด

class Solution {
    public int solution(String[] spell, String[] dic) {
        int cnt = 0;
        int answer = 0;
        for (int i=0; i<dic.length; i++) {
            if(dic[i].length() == spell.length) {
                for (int j=0; j<dic[i].length(); j++) {
                    if(dic[i].contains(spell[j])) {
                        cnt++;
                    } else {
                        cnt = 0;
                        break;
                    }
                }
                if (cnt==spell.length) {
                    answer = 1;
                    break;
                } else {
                    continue;
                }
            } else {
                continue;
            }
        }

        if(answer != 1) {
            answer = 2;
        } else {
            ;
        }
        return answer;
    }
}

 

์ฒ˜๋ฆฌ์†๋„ VERY GOOD

 

 

 


 

๐Ÿ’œ Comment

์ด ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š”๋ฐ ๊ฝค ์˜ค๋žœ ์‹œ๊ฐ„์„ ํ—ˆ๋น„ํ–ˆ๋‹ค. ์ ์ˆ˜๋Š” 2์  ๋ฐ–์— ์•ˆ ์˜ฌ๋ž์ง€๋งŒ๐Ÿ˜…

์ฝ”๋“œ์˜ ํ•ต์‹ฌ์€ ๋ฐ˜๋ณต๋ฌธ์—์„œ์˜ break;๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

๋‚˜๋Š” ๋จผ์ € spell[]์˜ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ํ•œ ๋ฒˆ์”ฉ๋งŒ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค๋ฉด ์ผ๋‹จ spell.length๋กœ dic[]์˜ ๋ฐฐ์—ด ์š”์†Œ์˜ ๊ธธ์ด๋ฅผ ๋น„๊ตํ•˜์—ฌ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์กฐ๊ฑด๋ฌธ์ด ์‹คํ–‰๋˜๋„๋ก ํ•˜์˜€๋‹ค.

๊ทธ ๋‹ค์Œ ์ด์ค‘ for๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ dic[i] ์•ˆ์— spell[j]๊ฐ€ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒ€์‚ฌํ•˜์˜€๋Š”๋ฐ, spell[]์˜ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์กฐํ•ฉํ•˜๋Š” ๋‹จ์–ด๋Š” ๋ฐ˜๋ณต๋ฌธ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ true๋งŒ์ด ๋‚˜์™€์•ผ ํ•œ๋‹ค.

cnt++;๋ฅผ ํ†ตํ•ด true๊ฐ’์ด ๋‚˜์˜จ ํšŸ์ˆ˜๋ฅผ ํ•ฉ์‚ฐํ•˜๊ณ , cnt์™€ spell.length๊ฐ€ ์ผ์น˜ํ•˜๋ฉด ๋ชจ๋“  ์š”์†Œ๊ฐ€ ํ•œ ๋ฒˆ์”ฉ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค๋Š” ๋œป์ด๋ฏ€๋กœ answer์— 1์„ ๋„ฃ๋„๋ก ํ•˜์˜€๋‹ค.

์ด ๋ฌธ์ œ์—์„œ๋Š” spell์— ๋‹ด๊ธด ์•ŒํŒŒ๋ฒณ์„ ํ•œ๋ฒˆ์”ฉ๋งŒ ๋ชจ๋‘ ์‚ฌ์šฉํ•œ ๋‹จ์–ด๊ฐ€ dic์— ์กด์žฌํ•˜๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋ฉด ๋˜๋ฏ€๋กœ ํ•œ๋ฒˆ์ด๋ผ๋„ answer์— 1์ด ๋‹ด๊ธด๋‹ค๋ฉด ๋ฐ”๋กœ ๋ฐ˜๋ณต๋ฌธ์„ ๋ฒ—์–ด๋‚˜๋„๋ก ์ž‘์„ฑํ–ˆ๋‹ค.

 

    if(dic[i].contains(spell[j])) {
        cnt++;
    } else {
        cnt = 0;
        break;
    }

์ด ๋ถ€๋ถ„์—์„œ else ์ ˆ์— break;๋ฅผ ๋„ฃ์ง€ ์•Š์•˜์„ ๋•Œ๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 8๋ฒˆ์—์„œ ์‹คํŒจ๊ฐ€ ๋–ด๋‹ค.

์ด else์ ˆ์—์„œ๋Š” cnt์˜ ์ดˆ๊ธฐํ™”๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”๋ฐ, spell[j]์˜ ์š”์†Œ๊ฐ€ dic[i]์— ์—†๋Š” ๊ฒฝ์šฐ์— ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด cnt๊ฐ€ ๊ณ„์† ๋ˆ„์ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— cnt๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ๋„ฃ์—ˆ๋‹ค. ๋‚˜๋Š” ์•ˆ์ผํ•˜๊ฒŒ๋„ cnt๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋ฉด spell[j]์˜ ์š”์†Œ๊ฐ€ dic[i]์— ์žˆ๋Š” ๊ฒฝ์šฐ๋งŒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๋”ฐ์ ธ๋ณด๋‹ˆ break;๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด spell[j]์˜ ์š”์†Œ๊ฐ€ dic[i]์— ์—†๋Š” ๊ฒฝ์šฐ์—๋„ j<dic[i].length();๊นŒ์ง€ ๋‹ค์‹œ ๋ฐ˜๋ณต๋ฌธ์ด ๋Œ์•„๊ฐ€๊ฒŒ ๋œ๋‹ค. ์ด ๋•Œ cnt๊ฐ€ ์ดˆ๊ธฐํ™”๋œ ์ดํ›„์— ๋ฐ˜๋ณต๋ฌธ์ด ์ด์–ด์„œ ์ง„ํ–‰๋˜๋ฏ€๋กœ ์ด ๋•Œ ํ•˜๋‚˜๋ผ๋„ spell[j]์˜ ์š”์†Œ๊ฐ€ dic[i]์— ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” cnt++;๊ฐ€ ์‹คํ–‰๋˜๊ฒŒ ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค์ง€ ์•Š์•˜๋˜ ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ž˜์„œ spell[j]์˜ ์š”์†Œ๊ฐ€ dic[i]์— ์—†๋Š” ๊ฒฝ์šฐ๋Š” cnt์˜ ์ดˆ๊ธฐํ™”์™€ break;๊ฐ€ ๋ฐœ์ƒํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์˜€๋”๋‹ˆ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ํ’€๊ณ ๋‚œ ๋’ค ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ฝ”๋“œ์™€ ๋‚ด ์ฝ”๋“œ๋ฅผ ๋น„๊ตํ•ด๋ณด๋ฉด ๊ฐ€๋” ๋ฒ™์งˆ ๋•Œ๊ฐ€ ์žˆ๋‹ค. ์ฃผ๋กœ ๋‚ด ์ฝ”๋“œ๋Š” ์ค„๊ธ€์ฒ˜๋Ÿผ ๋นผ๊ณกํ•œ๋ฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ฝ”๋“œ๋Š” ๊ฐ„๊ฒฐ ๊ทธ ์ž์ฒด์ผ ๋•Œ์ด๋‹ค. ํŠนํžˆ ๋žŒ๋‹ค์‹์ด๋‚˜ stream, builder์„ ํ™œ์šฉํ•ด์„œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ์–ด์ฉ์ง€ ์ฃผ๋ˆ…๋“ค๊ณ  ๋งŒ๋‹ค.

 

 

 

๋Œ“๊ธ€