[알고리즘] Java / 백준 / 비슷한 단어 / 1411

정현명·2022년 3월 23일
0

baekjoon

목록 보기
105/180
post-thumbnail

[알고리즘] Java / 백준 / 비슷한 단어 / 1411

문제


문제 링크



접근 방식


모든 문자열을 알파벳 순서로 매핑한다.

answer = "";

문자열이 다음과 같을 때
str = "zxcz" 

map을 생성하고 문자를 하나씩 검사

1) z는 map에 없으므로 key = z, value = a로 저장 및 answer에 추가
2) x는 map에 없으므로 key = x, value = b로 저장 및 answer에 추가
3) c는 map에 없으므로 key = c, value = c로 저장 및 answer에 추가
4) z는 map에 있으므로 바로 answer에 value 추가

그 후 조합으로 모든 문자열을 짝지어 비교하여 같은 문자열일 때 카운트한다



코드


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;

public class Main_1411 {
	static int answer;
	static int N;
	static int[] numbers;
	static String[] strs;
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		N = Integer.parseInt(br.readLine());
		numbers = new int[2];
		strs = new String[N];
		for(int i=0;i<N;i++) {
			strs[i] = mapping(br.readLine());
		}
		
		answer = 0;
		combi(0,0);
		System.out.println(answer);
	}
	
	
	public static void combi(int start, int cnt) {
		if(cnt == 2) {
			
			if(strs[numbers[0]].equals(strs[numbers[1]])) {
				answer++;
			}
			return;
		}
		
		for(int i=start; i<N;i++) {
			numbers[cnt] = i;
			combi(i+1,cnt+1);
		}
	}
	
	
	public static String mapping(String str) {
		String answer = "";
		
		Map<Character,Character> map = new HashMap<>();
		char c='a';
		for(int i=0;i<str.length();i++) {
			if(!map.containsKey(str.charAt(i))) {
				map.put(str.charAt(i), (char)(c++));
			}
			answer+=map.get(str.charAt(i));
		}
		
		return answer;
	}

}
profile
꾸준함, 책임감

0개의 댓글