์šฐ๊ทœ์ด์ธ์šฐ์œค
Eager To Learn ๐ŸŒŒ
์šฐ๊ทœ์ด์ธ์šฐ์œค
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿก ํ™ˆ
  • ๐Ÿš€ ๊นƒํ—ˆ๋ธŒ
  • โ›… ํƒœ๊ทธ ํด๋ผ์šฐ๋“œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (217)
    • ๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm ๊ธฐ๋ฒ• (1)
      • ๋ฐ”ํ‚น๋… (21)
    • ๋ธ”๋กœ๊ทธ ์ด์‚ฌ (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • ์ž๋ฃŒ๊ตฌ์กฐ (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • ๊ฐœ๋ฐœ์„œ์  (15)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)
      • ์˜ค๋ธŒ์ ํŠธ - ์กฐ์˜ํ˜ธ (7)
      • ์นœ์ ˆํ•œ SQL ํŠœ๋‹ (7)
    • ํšŒ๊ณ  (2)
hELLO ยท Designed By ์ •์ƒ์šฐ.
์šฐ๊ทœ์ด์ธ์šฐ์œค

Eager To Learn ๐ŸŒŒ

๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA

[JAVA] 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ ใ€๋ถˆ๋Ÿ‰ ์‚ฌ์šฉ์žใ€‘

2023. 4. 22. 18:59


๋ฐฑํŠธ๋ž˜ํ‚น ๋ฐฉ์‹์œผ๋กœ, banned_id์— ํ•ด๋‹นํ•˜๋Š” ๊ฐฏ์ˆ˜๋งŒํผ์˜ ์กฐํ•ฉ์„ ๋ชจ๋‘ ๊ตฌํ•œ๋‹ค.(getAllCases)

 

๊ทธ ์กฐํ•ฉ ์ˆœ์„œ๊ฐ€, banned_id์— ์žˆ๋Š” ์ •๊ทœ์‹ ์ˆœ์„œ๋Œ€๋กœ ๋งค์นญํ–ˆ์„ ๋•Œ ์ผ์น˜ํ•˜๋ฉด(checkRegex) ์ •๋ ฌํ•œ๋‹ค์Œ Set ์ž๋ฃŒ๊ตฌ์กฐ์— ๋„ฃ๋Š”๋‹ค.(addAns)

 

Set์€ ์ œ๋„ค๋ฆญ ํƒ€์ž…์„ String์œผ๋กœ ํ•˜์˜€๋Š”๋ฐ, ์กฐํ•ฉ์„ ๋ฌธ์ž์—ด๋กœ ๊ทธ๋Œ€๋กœ ๋”ํ•œ๊ฒƒ์œผ๋กœ ์ค‘๋ณต์ฒดํฌ๋ฅผ ํ•˜์˜€๋‹ค.

 

์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ๋Š”๊ฒŒ ์ƒ๊ฐ๋ณด๋‹ค ๊ธˆ๋ฐฉ ๋– ์˜ค๋ฅด์ง€ ์•Š์•˜๊ณ , ์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ์„๋•Œ๋Š” ๋„ˆ๋ฌด ๊ฐ€๋…์„ฑ ์—†์ด ํ’€์—ˆ์–ด์„œ ๋‹ค์‹œ ํ’€์—ˆ๋˜ ๋ฌธ์ œ๋‹ค.

 


import java.util.*;
import java.util.regex.*;
class Solution {
    Stack<String> s;
    HashSet<String> set;
    HashSet<String> ans;

    public int solution(String[] user_id, String[] banned_id) {
        s = new Stack<>();
        set = new HashSet<>();
        ans = new HashSet<>();

        getAllCases(user_id, banned_id);

        return ans.size();
    }

    void getAllCases(String[] user_id, String[] banned_id){
        if(s.size()==banned_id.length){
            String[] list = s.toArray(new String[s.size()]);
            if(checkRegex(list,banned_id)){
                addAns(list);
            }
            return;
        }

        for(int i=0;i<user_id.length;i++){
            String id = user_id[i];
            if(s.contains(id)){
                continue;
            }
            s.push(id);
            getAllCases(user_id,banned_id);
            s.pop();
        }
    }

    boolean checkRegex(String[] list, String[] banned_id){
        for(int i=0;i<banned_id.length;i++){
            String regex = banned_id[i].replaceAll("\\*",".");
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(list[i]);
            if(m.find()){
                if(m.group().length()!=list[i].length()){
                    return false;
                }
            }else{
                return false;
            }
        }
        return true;
    }

    void addAns(String[] list){
        Arrays.sort(list);
        StringBuilder sb = new StringBuilder();
        for(String str : list){
            sb.append(str);
        }
        ans.add(sb.toString());
    }

}
    '๐Ÿ‘จ๐Ÿป‍๐Ÿ’ป PS/JAVA' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [JAVA] 2018 KAKAO BLIND RECRUITMENT ใ€๋ฐฉ๊ธˆ๊ทธ๊ณกใ€‘
    • [JAVA] 2020 KAKAO BLIND RECRUITMENT ใ€๊ด„ํ˜ธ ๋ณ€ํ™˜ใ€‘
    • [JAVA] 2018 KAKAO BLIND RECRUITMENTใ€ํ”„๋žœ์ฆˆ4๋ธ”๋กใ€‘
    • [JAVA] 2019 KAKAO BLIND RECRUITMENTใ€์˜คํ”ˆ์ฑ„ํŒ…๋ฐฉใ€‘
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ์šฐ๊ทœ์ด์ธ์šฐ์œค
    ๊ฐœ๋ฐœ์ž ๊ฟˆ๋‚˜๋ฌด

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”