d2
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PTeo6AHUDFAUq
1) for문으로 해결
for문을 사용해서 3,6,9를 포함할 경우 - 처리를 해주는 방식으로 풀었다.
한번 결과가 Fail이 났는데, 같은 수를 구분하는 곳에만 띄어쓰기를, 35일 경우 -5가 아니라 - 임을 적용하니 문제가 해결됐다.
if (tmp.contains("3") || tmp.contains("6") || tmp.contains("9")) {
for (int j = 0; j < tmp.length(); j++) {
if (tmp.charAt(j) == '3' || tmp.charAt(j) == '6' || tmp.charAt(j) == '9') {
System.out.print("-");
}
}
System.out.print(" ");
} else {
System.out.print(i + " ");
}
2) 정규식 사용
댓글을 보니 정규식으로 풀었다는 글이 있어 정규식으로도 풀어보았다.
정규식을 사용할 때는 replace 가 아닌 replaceAll을 사용함을 주의하자!!
if (tmp.contains("3") || tmp.contains("6") || tmp.contains("9")) {
for (int j = 0; j < tmp.length(); j++) {
tmp = tmp.replaceAll("[369]", "-");
}
tmp = tmp.replaceAll("[0124578]", "");
}
System.out.print(tmp + " ");
3) replace 사용
다른 풀이도 찾아보던 중 replace로도 풀 수 있음을 알게 되었다.
이런 코드도 있다~ 하고 참고하자.
if (tmp.contains("3") || tmp.contains("6") || tmp.contains("9")) {
tmp = tmp.replace("3", "-");
tmp = tmp.replace("6", "-");
tmp = tmp.replace("9", "-");
tmp = tmp.replace("0", "");
tmp = tmp.replace("1", "");
tmp = tmp.replace("2", "");
tmp = tmp.replace("4", "");
tmp = tmp.replace("5", "");
tmp = tmp.replace("7", "");
tmp = tmp.replace("8", "");
}
System.out.print(tmp + " ");
1) for 문으로 해결한 코드
package d2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class SWEA1926 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for (int i = 1; i <= n; i++) {
String tmp = String.valueOf(i);
if (tmp.contains("3") || tmp.contains("6") || tmp.contains("9")) {
for (int j = 0; j < tmp.length(); j++) {
if (tmp.charAt(j) == '3' || tmp.charAt(j) == '6' || tmp.charAt(j) == '9') {
System.out.print("-");
}
}
System.out.print(" ");
} else {
System.out.print(i + " ");
}
}
}
}
2) 정규식으로 해결한 코드
package d2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class SWEA1926 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for (int i = 1; i <= n; i++) {
String tmp = String.valueOf(i);
if (tmp.contains("3") || tmp.contains("6") || tmp.contains("9")) {
for (int j = 0; j < tmp.length(); j++) {
tmp = tmp.replaceAll("[369]", "-");
}
tmp = tmp.replaceAll("[0124578]", "");
}
System.out.print(tmp + " ");
}
}
}
3) replace로 해결한 코드
package d2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class SWEA1926 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
for (int i = 1; i <= n; i++) {
String tmp = String.valueOf(i);
if (tmp.contains("3") || tmp.contains("6") || tmp.contains("9")) {
tmp = tmp.replace("3", "-");
tmp = tmp.replace("6", "-");
tmp = tmp.replace("9", "-");
tmp = tmp.replace("0", "");
tmp = tmp.replace("1", "");
tmp = tmp.replace("2", "");
tmp = tmp.replace("4", "");
tmp = tmp.replace("5", "");
tmp = tmp.replace("7", "");
tmp = tmp.replace("8", "");
}
System.out.print(tmp + " ");
}
}
}