코딩 기초 트레이닝 Day 1 with Java

2024. 2. 28. 10:17코딩테스트 리뷰(프로그래머스)/코딩 기초 트레이닝 with Java

문제.1 - 문자열 출력하기

더보기

문제 설명

 - 문자열 str 이 주어질 때, str을 출력하는 코드를 작성해 보세요.

 

제한사항

* 1 <= str.length <= 1000000

* str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다.

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        System.out.printf(a);
    }
}

 

 - System.out.printf

 - System.out.println

 - System.out.print

위 3개중 하나를 선택하여 a를 출력하면 되는 문제입니다.

 

문제.2 - a와 b 출력하기

더보기

문제 설명

 - 정수  a와 b가 주어집니다. 각 수를 입력받아 입출력 예와 같은 형식으로 출력하는 코드를 작성해 보세요.

 

제한사항

* -100000 <= a,b <= 100000

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();

        System.out.println("a = " + a);
        System.out.printf("b = " + b);
    }
}

 

스캐너 인스턴스로 입력형식에 따라 sc.nextInt() 사용하는 모습을 확인할 수 있고,

a = 4
b = 5

형식으로 출력을 하면되어서

처음 출력을 System.out.println 를 사용하였고, 두번째 출력을 System.out.printf를 사용하였습니다.

System.out.printf("a = " + a + "\nb = " + b);

이렇게 한줄로 출력을 하여도 가능합니다.

 

문제.3 - 문자열 반복해서 출력하기

더보기

문제 설명

 - 문자열  str과 정수 n 이 주어집니다.

 - str이 n번 반복된 문자열을 만들어 출력하는 코드를 작성해 보세요.

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        int n = sc.nextInt();
        
        System.out.printf(str.repeat(n));
    }
}

 

3번 문제를 풀때 자바에 python 처럼

#python
print(str * n)

문자열 곱셈 연산자가 사용이 가능하지 않았나 생각이 들었습니다.

안되길레 인터넷에서 repeat 메소드를 찾아서 사용했습니다...

https://soo-vely-dev.tistory.com/233

 

[Java] 문자열 반복 메서드 repeat (예제 포함)

프로그래머스에서 입력받은 문자열을 일정 횟수만큼 반복하여 출력하는 문제를 접하였습니다. 문제 설명 문자열 str과 정수 n이 주어질 때, str이 n번 반복된 문자열을 만들어 출력하는 코드를 작

soo-vely-dev.tistory.com

위에 블로그를 참조하여 하였습니다.

 

문제.4 - 대소문자 바꿔서 출력하기

더보기

문제 설명

 - 영어 알파벳으로 이루어진 문자열str이 주어집니다.  각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요.

 

제한사항

 * 1 <= str.length <= 20

 * str은 알파벳으로 이루어진 문자열입니다.

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String result = "";
        // 대문자 A~Z = 65~90 까지
        // 소문자 a~z = 97~122 까지
        for ( String substr : a.split("")) {
            if( 65 <= substr.charAt(0) && substr.charAt(0) <= 90 ) { // 문자가 대문자인가 ?
                result += substr.toLowerCase();
            }
            else if ( 97 <= substr.charAt(0) && substr.charAt(0) <= 122 ) { // 문자가 소문자인가 ?
                result += substr.toUpperCase();
            }
            else result += substr; // 일반적인 문자
        }
        System.out.print(result);
    }
}

위에 문제에서는 아스키코드를 참조하여 문제를 해결하는 것 이였습니다.

저는 새로운 문자열을 생성한 다음에 해당 문자열에 추가를 하였습니다.

for문을 for each문을 사용하여 풀이하였습니다.

https://dlee0129.tistory.com/94

 

[JAVA 자바] 문자열(String) forEach(Enhanced for) 사용법

JAVA 자바 문자열 forEach(Enhanced for) 사용법 (enhanced for문을 forEach로 취급하겠습니다...) 개요 아래와 같이 문자열(String) 타임의 s를 forEach를 사용하려 하면, for (char c : s) { ... }다음과 같은 애러 등이

dlee0129.tistory.com

for each문은 위에 블로그를 참조하였습니다.

입력받은 문자열을 분리하여 각 문자로 받은 뒤로 charAt를 사용하여 문자열의 첫번째 문자를 char형식으로 변환해 아스키코드 형식으로 비교를 하였습니다.

이후 대문자면 .toLowerCase(), 소문자면 .toUpperCase() 하여 result에 추가하였습니다.

 

문제.5 - 특수문자 출력하기

더보기

문제 설명

 - 다음과 같이 출력하도록 코드를 작성해 주세요.

 

출력 예시

!@#$%^&*(\'"<>?:;
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        System.out.print("!@#$%^&*(\\'\"<>?:;");
    }
}

해당 문제는 작은 따옴표('), 큰 따옴표 (") 를 출력하는 문제였습니다.

해당 특수 문자를 출력을 하는 방법은 앞에 역슬레쉬(\)를 특수문자 앞에 두면 출력이 가능하게 됩니다.

 

 

Day.1 후기

 오랜만에 자바를 다시 잡고 공부를 하려니 기억이 안나는 것이 많고 새로 아는 문법도 생기게 되었습니다.

이것을 진행하면서 자바에 새로운 문법이나 메소드를 정리하는 글을 적어도 좋을 것 같다는 생각이 듭니다.

내일도 화이팅