[SWEA] 1926번 간단한 369게임 - Java, 자바

Kim Ji Eun·2022년 4월 13일
0

난이도

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 + " ");
        }

    }
}

profile
Back-End Developer

0개의 댓글