Zayson
A to Zayson!
Zayson
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (132)
    • Computer Science (20)
      • Network (4)
      • DB (12)
      • OS (4)
    • Algorithm (32)
      • ์™„์ „ํƒ์ƒ‰(Brute-Force) (3)
      • ๊ทธ๋ฆฌ๋””(Greedy) (6)
      • ํˆฌํฌ์ธํ„ฐ(Two-Pointer) (1)
      • ๊ทธ๋ž˜ํ”„(Graph) (5)
      • BFS & DFS (9)
      • ๊ตฌํ˜„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜(Implementation) (5)
      • ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP) (3)
    • Backend (51)
      • Spring Boot (19)
      • JPA (16)
      • Kafka (2)
      • Java (13)
      • Kotlin (1)
    • DevOps (1)
      • Jenkins (5)
      • Oracle Cloud Infrastructure (1)
      • Kubernetes & Docker (1)
    • Trouble Shooting (3)
      • JPA (1)
      • Spring Boot (2)
    • ํšŒ๊ณ  (5)
      • ์—”๋นต ํ”„๋กœ์ ํŠธ ํฌ์ŠคํŠธ ๋กœ๋“œ๋งต (1)
      • 2022๋…„ (4)
    • Kafka (7)
      • Kafka (5)
      • Kafka Connect (2)
    • ๊ธฐ์ˆ  ์„œ์  (6)
      • ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„ (3)
      • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ •๋ณตํ•ด์•ผํ•  ๊ฐ์ฒด ์ง€ํ–ฅ๊ณผ ๋””์ž์ธ ํŒจํ„ด (2)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)

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

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Backend
  • ๊ตฌํ˜„
  • ๋ฐฑ์ค€
  • JPA
  • ๊ทธ๋ฆฌ๋””
  • ๋ผ์ด๋ธŒ์Šคํ„ฐ๋””
  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹ค์ „ ์ž…๋ฌธ
  • SpringBoot
  • ์—”๋นตํ”„๋กœ์ ํŠธ
  • Kafka Connect
  • BFS
  • Computer science
  • dfs
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • CS
  • kafka
  • ์™„์ „ํƒ์ƒ‰
  • Java
  • spring boot
  • ๋‚˜ ํ˜ผ์ž ์Šคํ”„๋ง๋ถ€ํŠธ!

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Zayson

A to Zayson!

[๋ฐฑ์ค€, Java] 1062๋ฒˆ :  ๊ฐ€๋ฅด์นจ
Algorithm/์™„์ „ํƒ์ƒ‰(Brute-Force)

[๋ฐฑ์ค€, Java] 1062๋ฒˆ : ๊ฐ€๋ฅด์นจ

2022. 5. 10. 22:59

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

https://www.acmicpc.net/problem/1062

๐Ÿ˜ฎ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๋ฌธ์ œ์—์„œ ๋‚จ๊ทน ๋‹จ์–ด์˜ ์‹œ์ž‘๊ณผ ๋์€ anta, tica๋กœ ๋๋‚œ๋‹ค๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— a,n,t,i,c๋Š” ๋ฐ˜๋“œ์‹œ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ๊ธ€์ž์ด๋‹ค.

a,n,t,i,c๋ฅผ ํฌํ•จํ•ด ๋‚จ์€ ์•ŒํŒŒ๋ฒณ ์ค‘ k๊ฐœ๋ฅผ ์กฐํ•ฉํ•œ๋‹ค.

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

  1. a,n,t,i,c๋Š” ๋ฐ˜๋“œ์‹œ ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ๊ธ€์ž์ด๋ฏ€๋กœ K๊ฐ€ 5๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ๋‚จ๊ทน ๋‹จ์–ด๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— 0์„ ๋ฆฌํ„ดํ•œ๋‹ค.
  2. K๊ฐ€ 5๋ณด๋‹ค ํฌ๋‹ค๋ฉด ์ด๋ฏธ 5๊ฐœ๋ฅผ ๋ฐฐ์› ๊ธฐ ๋•Œ๋ฌธ์— a,n,t,i,c๋ฅผ ์ œ์™ธํ•œ (K - 5)๊ฐœ์˜ ๊ธ€์ž๋ฅผ ๋ฐฑํŠธ๋ž˜ํ‚น๊ณผ ์กฐํ•ฉ์„ ์ด์šฉํ•ด ์ถ”๊ฐ€๋กœ ์ฒดํฌํ•œ๋‹ค.
    1. teachingAlphabet์ด true ๋ผ๋ฉด ์•ŒํŒŒ๋ฒณ์„ ๋ฐฐ์šด ์ƒํƒœ์ด๋‹ค.
  3. ์•ŒํŒŒ๋ฒณ์„ ๋ชจ๋‘ ๋ฐฐ์› ๋‹ค๋ฉด, ๋‚จ๊ทน ๋‹จ์–ด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํŒ๋‹จํ•œ๋‹ค.
  4. ํ˜„์žฌ ์•ŒํŒŒ๋ฒณ ์กฐํ•ฉ์—์„œ ๋ช‡๊ฐœ์˜ ๋‚จ๊ทน๋‹จ์–ด๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š”์ง€ ์ฒดํฌํ•œ ํ›„ ์ง€๊ธˆ๊นŒ์ง€ ์ตœ๋Œ€๋กœ ๋ฐฐ์šด ๋‹จ์–ด๊ฐœ์ˆ˜์™€ ๋น„๊ตํ•ด ์ตœ๋Œ€๊ฐ’์„ ๊ฐฑ์‹ ํ•œ๋‹ค.

๐Ÿšฉ Java ์ฝ”๋“œ

package com.algorithm.Baekjoon;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main_1062_๊ฐ€๋ฅด์นจ {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());

        String[] words = new String[N];
        for (int loop = 0; loop < N; loop++) {
            words[loop] = br.readLine();
        }

        int rst = teachAnticWord(K, words);
        System.out.println(rst);

        br.close();
    }

    private static int count;
    private static int teachAnticWord(int K, String[] words) {
        /**
         * 1. a,n,t,i,c๋Š” ๋ฌด์กฐ๊ฑด ๋ฐฐ์›Œ์•ผํ•˜๋Š” ๊ธ€์ž์ด๋ฏ€๋กœ K๊ฐœ๊ฐ€ 5๊ฐœ ์ด์ƒ์ด๋ฉด 5๊ฐœ ๋นผ๊ณ  ๋‚จ์€ ๊ธ€์ž๋กœ ์กฐํ•ฉ ๋งŒ๋“ค๊ธฐ
         * 2. ๋งŒ๋“ค์–ด์ง„ ๊ธ€์ž ์กฐํ•ฉ์œผ๋กœ ๋ชจ๋“  ๋‹จ์–ด์— ํฌํ•จ๋˜๋Š” ๊ธ€์ž์ธ์ง€ ํƒ์ƒ‰ -> ํ•˜๋‚˜๋ผ๋„ ํฌํ•จ์ด ์•ˆ๋œ ๊ฒฝ์šฐ ๋‹ค์Œ ๋‹จ์–ด๋กœ
         * 3. ๊ธ€์ž ์กฐํ•ฉ ๋ณ„ ์ตœ๊ณ ๋กœ ๊ฐ€๋ฅด์น  ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด ๊ฐœ์ˆ˜ ๊ฐฑ์‹ 
         */
        // a,n,t,i,c๋ฅผ ๋ชป๋ฐฐ์šฐ๋Š” ๊ฒฝ์šฐ 0๊ฐœ
        if(K < 5) return 0;

        count = 0;
        boolean[] teachingAlphabet = new boolean[26];       // ๊ฐ€๋ฅด์น  ์•ŒํŒŒ๋ฒณ ์ฒดํฌ ๋ฐฐ์—ด
        // a,n,t,i,c๋Š” ๋ฌด์กฐ๊ฑด ๋ฐฐ์›Œ์•ผํ•˜๋ฏ€๋กœ true
        teachingAlphabet[0] = teachingAlphabet[2] = teachingAlphabet[8] = teachingAlphabet[13] = teachingAlphabet[19] = true;

        teachLetter(0,0, K - 5, words, teachingAlphabet);

        return count;
    }

    // start : ์‹œ์ž‘ ์ธ๋ฑ์Šค, letterCount : ๋ฐฐ์šด ๊ธ€์ž ๊ฐœ์ˆ˜, finishCount :  ๋ฐฐ์šธ ๊ธ€์ž ๊ฐœ์ˆ˜(a,n,t,i,c ์ œ์™ธ)
    private static void teachLetter(int start, int letterCount, int finishCount, String[] words, boolean[] teachingAlphabet) {
        if(letterCount == finishCount) {
            // 2. ๋งŒ๋“ค์–ด์ง„ ๊ธ€์ž ์กฐํ•ฉ์œผ๋กœ ๋ชจ๋“  ๋‹จ์–ด์— ํฌํ•จ๋˜๋Š” ๊ธ€์ž์ธ์ง€ ํƒ์ƒ‰ -> ํ•˜๋‚˜๋ผ๋„ ํฌํ•จ์ด ์•ˆ๋œ ๊ฒฝ์šฐ ๋‹ค์Œ ๋‹จ์–ด๋กœ
            int teachingCount = 0;
            for (String word : words) {
                boolean teach = true;
                for (char letter : word.toCharArray()) {
                    if(!teachingAlphabet[letter-97]) {   // ์•„์Šคํ‚ค์ฝ”๋“œ 97 : a
                        teach = false;
                        break;
                    }
                }
                if(teach) teachingCount++;
            }

            // 3. ๊ธ€์ž ์กฐํ•ฉ ๋ณ„ ์ตœ๊ณ ๋กœ ๊ฐ€๋ฅด์น  ์ˆ˜ ์žˆ๋Š” ๋‹จ์–ด ๊ฐœ์ˆ˜ ๊ฐฑ์‹ 
            count = Math.max(count, teachingCount);
            return;
        }

        // ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ์•ŒํŒŒ๋ฒณ ์กฐํ•ฉ ๋งŒ๋“ค๊ธฐ
        for(int alpha = start; alpha < 26; alpha++) {
            if(!teachingAlphabet[alpha]) {
                teachingAlphabet[alpha] = true;
                teachLetter(alpha +1, letterCount+1, finishCount, words, teachingAlphabet);
                teachingAlphabet[alpha] = false;
            }
        }
    }
}
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Algorithm > ์™„์ „ํƒ์ƒ‰(Brute-Force)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€, Java] 9663๋ฒˆ : N-Queen  (0) 2022.05.16
[๋ฐฑ์ค€, Java] 16637๋ฒˆ : ๊ด„ํ˜ธ ์ถ”๊ฐ€ํ•˜๊ธฐ  (0) 2022.04.19
    'Algorithm/์™„์ „ํƒ์ƒ‰(Brute-Force)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [๋ฐฑ์ค€, Java] 9663๋ฒˆ : N-Queen
    • [๋ฐฑ์ค€, Java] 16637๋ฒˆ : ๊ด„ํ˜ธ ์ถ”๊ฐ€ํ•˜๊ธฐ
    Zayson
    Zayson
    ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„

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