[프로그래머스] JAVA

설하나·2023년 10월 4일
0

알고리즘

목록 보기
17/22

0부터 시작하기 첫 걸음!

1. 문자열 출력하기

[문제 상황]

문자열 str이 주어질 때, 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.println(a);
    }
}

[문제 해결 방향]

Scanner를 통해서 입력값을 받고, System.out.println()을 통해서 출력했다.

[정리]

  • Java에서 결과를 출력하기 위해서는 System.out.println()System.out.print() 이 있다. 두 개의 차이점은 "ln"의 유무인데, 이는 출력 후 엔터를 치라는 의미를 담고있다.
  • Scanner 클래스는 표준 입력 처리에서 사용하며, java.util패키지에 있다.
  • System.in은 inputStream 타입이기 때문에 inputStream 클래스의 메소드들을 사용할 수 있다.

2. a와 b 출력하기

[문제 상황]

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

[풀이 코드]

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.println("b = " + b);
    }
}

[문제 해결 방향]

System.out.println()을 통해서 출력 후 엔터를 치도록 작성했다.

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();
        String result = "";
        for(int i = 0; i<n; i++){
            result += str;
        }
        System.out.println(result);
    }
}

[문제 해결 방향]

Scanner를 통해서 반복할 문자열과 반복 횟수를 입력값을 받았다.
for문을 통해서 반복한 입력횟수만큼 result라는 String에 문자열을 더했다.
System.out.println()을 통해서 result출력했다.

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

[문제 상황]

영어 알파벳으로 이루어진 문자열 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 = "";
        for(int i=0; i<a.length(); i++){
            char temp = a.charAt(i);
            // 대문자인 경우
            if((65 <= temp) && (temp <= 90)){
                result += a.valueOf(temp).toLowerCase();
            }
            // 소문자인 경우
            else if((97 <= temp) && (temp <= 122)) {
                result += a.valueOf(temp).toUpperCase();
            }
            // 이외
            else {
                result += (char) temp;
            }
        }
        System.out.println(result);
    }
}

[문제 해결 방향]

Scanner를 통해서 문자열을 입력받았다.
해당 문자열을 a라는 변수에 저장하고, a의 길이만큼 for문을 돌았다.
for문 안에서는 해당 index의 문자의 아스키코드를 추출하고, 해당 아스키코드가 대문자인지, 소문자인지, 혹은 그 이외의 문자인지 확인을 하는 if문을 작성하였다.
만약, 대문자 혹은 소문자라면 해당하는 문자를 가져와 이를 문자열로 변환한다음 대문자라면 소문자로 소문자라면 대문자로 변환한 후 result에 추가하였다.
이외의 경우는 변환없이 그대로 result에 추가한 후 println을 통해서 출력했다.

[정리]

  • valueOf()는 문자열 형 변환 방법 중하나이다. (오늘 따로 정리 예정)
  • toLowerCase()는 문자열을 소문자로 변환하는 매서드이다.
  • toUpperCase()는 문자열을 대문자로 변환하는 매서드이다.

5. 특수문자 출력하기

[문제 상황]

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

!@#$%^&*(\'"<>?:;

[풀이 코드]

import java.util.Scanner;

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

[문제 해결 방향]

특수 문자열을 출력하기 위해서는 이스케이프 문자를 사용해야한다. \를 사용해서 출력가능하게 하였다.

여기까지 오늘 알고리즘 공부가 끝났다. 아래는 오늘의 알고리즘 진도표이다.
요즘 프로그래머스에서 이런것도 해준다.. 신기..

profile
Backend

0개의 댓글