SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
풀이
방법 1.
contain() 사용해서 구멍이 하나도 없는 알파벳, 구멍이 하나만 있는 알파벳, 구멍이 두개 있는 알파벳을 갖고 있는 문자열에 포함여부를 판단해서 같은 문자열인지 파악하여 해결했습니다.
방법 2.
replaceAll()을 사용하여 좀 더 간단한(?) 코드로 해결할 수 있었습니다.
코드
방법 1.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static String text1, text2;
public final static String NOHOLE = "CEFGHIJKLMNSTUVWXYZ";
public final static String ONEHOLE = "ADOPQR";
public final static String DOUBLEHOLE = "B";
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder("");
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; ++tc) {
st = new StringTokenizer(br.readLine(), " ");
text1 = st.nextToken();
text2 = st.nextToken();
sb.append("#").append(tc).append(" ");
if (text1.length() != text2.length()) {
sb.append("DIFF");
}
else {
sb.append((checkText() ? "SAME" : "DIFF"));
}
sb.append("\n");
}
System.out.println(sb);
}
public static boolean checkText() {
int len = text1.length();
boolean flag = false;
for (int i = 0; i < len; ++i) {
if (NOHOLE.contains(String.valueOf(text1.charAt(i))) &&
NOHOLE.contains(String.valueOf(text2.charAt(i)))) {
flag = true;
}
if (ONEHOLE.contains(String.valueOf(text1.charAt(i))) &&
ONEHOLE.contains(String.valueOf(text2.charAt(i)))) {
flag = true;
}
if (DOUBLEHOLE.contains(String.valueOf(text1.charAt(i))) &&
DOUBLEHOLE.contains(String.valueOf(text2.charAt(i)))) {
flag = true;
}
if (!flag) {
return false;
}
flag = false;
}
return true;
}
}
방법 2.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Solution {
public static String text1, text2;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder("");
StringTokenizer st;
int T = Integer.parseInt(br.readLine());
for (int tc = 1; tc <= T; ++tc) {
st = new StringTokenizer(br.readLine(), " ");
text1 = st.nextToken();
text2 = st.nextToken();
text1 = transferText(text1);
text2 = transferText(text2);
sb.append("#").append(tc).append(" ");
if (text1.equals(text2)) {
sb.append("SAME");
}
else {
sb.append("DIFF");
}
sb.append("\n");
}
System.out.println(sb);
}
public static String transferText(String text) {
text = text.replaceAll("C|E|F|G|H|I|J|K|L|M|N|S|T|U|V|W|X|Y|Z", "-");
text = text.replaceAll("A|D|O|P|Q|R", "0");
text = text.replace('B', '8');
return text;
}
}
pyo7410/Algorithm
1일 1커밋을 목표로! Contribute to pyo7410/Algorithm development by creating an account on GitHub.
github.com
'알고리즘 > SWEA' 카테고리의 다른 글
[Java] SWEA 1223번 계산기2 (0) | 2021.02.14 |
---|---|
[Java] SWEA 4261번 빠른 휴대전화 키패드 (0) | 2021.02.11 |
[Java] SWEA 6485번 삼성시의 버스 노선 (0) | 2021.02.09 |
[Java] SWEA 7227번 사랑의 카운슬러 (0) | 2021.02.08 |
[Java] SWEA 6853번 직사각형과 점 (0) | 2021.02.06 |