흙금이네 블로그

[BOJ] 1411 - 비슷한 단어 (Python, JavaScript) 본문

알고리즘

[BOJ] 1411 - 비슷한 단어 (Python, JavaScript)

흙금 2023. 5. 20. 08:30

 

 

아이디어

 

맵을 이용하여 단어를 구성하는 알파벳의 순서 패턴을 저장하고 비슷한 문자열 쌍의 개수를 구한다.

 

 

풀이 #1 (Python)

 

import sys

input = sys.stdin.readline

def solution():
    N = int(input())
    patterns = dict()
    res = 0
    for _ in range(N):
        word = input().rstrip()
        alpha = dict()
        val = 1
        p = ''
        for c in word:
            if alpha.get(c, 0) == 0:
                alpha[c] = val
                val += 1
            p += f'{alpha.get(c, 0)}'
        cnt = patterns.get(p, 0)
        res += cnt
        patterns[p] = cnt+1
    print(res)

solution()

 

 

 

풀이 #2 (JavaScript)

 

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().split('\n');

function solution() {
    const N = Number(input[0]);
    let patterns = new Map();
    let res = 0;
    for (let i=1; i<=N; i++) {
        const word = input[i];
        let alpha = new Map();
        let val = 1;
        let p = '';
        for (const c of word) {
            if (!alpha.get(c)) {
                alpha.set(c, val);
                val += 1;
            }
            p += alpha.get(c);
        }
        let cnt = patterns.get(p);
        if (!cnt) cnt = 0;
        res += cnt;
        patterns.set(p, cnt+1);
    }
    console.log(res);
}

solution();

 

Comments