코드 분석

(3/26) Paiza 문제 코드 비교

AOIME 2026. 3. 26. 13:27

문제 1.

더보기

1.내가 작성한 코드 -> 직관적이고 알기는 쉽지만 성능이 않좋음 시간적으로 O(N^2) 

import java.util.*;


public class Main {
    public static void main(String[] args) {
        // 自分の得意な言語で
        // Let's チャレンジ!!
        Scanner sc = new Scanner(System.in);
        String line = sc.nextLine();
        
        String x = "";
        for (int i = 0; i < line.length(); i++ ){
            char a = line.charAt(i);
            if (Character.isUpperCase(a)){
                 x += Character.toLowerCase(a);
            } else if(Character.isLowerCase(a)){
                x += Character.toUpperCase(a);
            }
        } 
        System.out.println(x);
    }
}

 

2. 파이자가 정답 코드 코드짧고 직관적 그리고 배열 기반 처리 시간 O(N)

import java.util.*;

public class Main {

    public static void main(String... args) {
        Scanner sc = new Scanner(System.in);

        var S = sc.next().toCharArray();

        for (char c : S) {
            if (Character.isUpperCase(c)) {
                System.out.print(Character.toLowerCase(c));
            } else {
                System.out.print(Character.toUpperCase(c));
            }
        }

        System.out.println();
    }
}

 

3. AI가 생각한 답변 -> I/O발생을 한번만 발생시킨다.

StringBuilder sb = new StringBuilder();

for (char c : sc.next().toCharArray()) {
    if (Character.isUpperCase(c)) {
        sb.append(Character.toLowerCase(c));
    } else if (Character.isLowerCase(c)) {
        sb.append(Character.toUpperCase(c));
    } else {
        sb.append(c);
    }
}

System.out.println(sb);

 

문제 2

 

contains는 문제의 요구사항을 그대로 표현한 것이고,  == 포함되냐?” (의도 중심)
indexOf는 내부 동작을 드러낸 방식이다.  == “위치가 없냐?” (구현 중심)

더보기

1. 내가 푼 문제

import java.util.*;


public class Main {
    public static void main(String[] args) {
        // 自分の得意な言語で
        // Let's チャレンジ!!
        Scanner sc = new Scanner(System.in);
        String a = sc.nextLine();
        String b = sc.nextLine();
        
        boolean x = a.contains(b);
        if (x){
            System.out.println("YES");    
        } else {
            System.out.println("NO");
        }
        
    }
}

 

2. 파이자 문제 풀이

import java.util.*;

public class Main {

    public static void main(String... args) {
        Scanner sc = new Scanner(System.in);

        var S = sc.next();
        var T = sc.next();

        if (S.indexOf(T) == -1) {
            System.out.println("NO");
        } else {
            System.out.println("YES");
        }
    }
}

 

3. AI라면 -> 내가 쓴 변수를 생략하고 if문 안에 직접 넣어서 코드를 줄였다.

if (a.contains(b)) {
    System.out.println("YES");
} else {
    System.out.println("NO");
}

 

문제 3

 

더보기

1.내가 푼 방식은 replace() 방식으로 "," 문자열에 있는 글 자를 바꿈

2. split()는 "," 로 구분해서 문자열을 나눈다 예를 들어 "a, b, c" 를 "a","b","c"   배열

3. delimiter() 입력 분해(스트림) sc.useDelimiter(","); 입력 기준 자체를 나누어 읽는다.

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        sc.useDelimiter("/|:"); // "/" , ":" 두개를 쓰고 싶을때 비트 연산자 | 이것을 사용한다.

        while (sc.hasNext()) {
            System.out.println(sc.next());
        }
    }
}

 

 

 

728x90