[프로그래머스] JAVA

설하나·2023년 10월 5일
0

알고리즘

목록 보기
18/22

작심 2일차 가보자구

1. 덧셈식 출력하기

[문제 상황]

두 정수 a, b가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성해 보세요.

a + b = c

[풀이 코드]

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

[문제 해결 방향]

Scanner를 통해서 입력값을 받고, System.out.println()을 통해서 출력했다.
a+b의 결과값을 변수에 저장하지 않고, 괄호를 통해 구분하였다. 괄호가 없으면 a+b=a+b로 출력된다.

2. 문자열 붙여서 출력하기

[문제 상황]

두 개의 문자열 str1, str2가 공백으로 구분되어 입력으로 주어집니다.
입출력 예와 같이 str1과 str2을 이어서 출력하는 코드를 작성해 보세요.

[풀이 코드]

import java.util.Scanner;

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

[문제 해결 방향]

Scanner를 통해서 입력값을 받고, System.out.println()을 통해서 출력했다.
문자열을 +연산자를 이용해서 연결하였다.

3. 문자열 돌리기

[문제 상황]

문자열 str이 주어집니다.
문자열을 시계방향으로 90도 돌려서 아래 입출력 예와 같이 출력하는 코드를 작성해 보세요.

[풀이 코드]

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String[] str = a.split("");
        for(int i=0; i<str.length; i++){
            System.out.println(str[i]);
        }
    }
}

[문제 해결 방향]

Scanner를 통해서 입력값을 받고, split을 통해서 String을 String[]인 배열로 만들다음 for문을 돌면서 한글자씩 println을 통해서 출력했다.

[정리]

  • split는 Java에서 String을 다룰 때, 유용하게 사용할 수 있는 함수로, 입력받은 정규표현식 또는 특정문자를 기준으로 문자열을 나누어 배열에 저장하여 리턴해주는 함수이다.
  • 리턴 데이터 타입은 String[]이다.
  • 인자값으로는 두개를 받을 수 있다. 앞서말한 것처럼 첫번째 값은 기준이되는 문자열이고, 두번째 값은 배열의 크기이다.

4. 홀짝 구분하기

[문제 상황]

자연수 n이 입력으로 주어졌을 때 만약 n이 짝수이면 "n is even"을, 홀수이면 "n is odd"를 출력하는 코드를 작성해 보세요.

[풀이 코드]

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        if(n%2 == 0) {
            System.out.println(n + " is even");
        } else {
            System.out.println(n + " is odd");
        }
    }
}

[문제 해결 방향]

입력받은 값이 2로 나눴을 때, 나머지가 0이라면 짝수 그렇지 않다면 홀수인 점을 이용해서 if~else문으로 경우를 나누고 println을 통해 출력했다.

5. 문자열 겹쳐쓰기

[문제 상황]

문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요.

[풀이 코드]

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = "";
        String[] my_str = my_string.split("");
        String[] over_str = overwrite_string.split("");
        
        for(int i=0; i<my_str.length; i++){
            if((s <= i) && (i <= s + over_str.length - 1)){
                answer += over_str[i-s];
            }else{
                answer += my_str[i];
            }
        }
        
        return answer;
    }
}

[문제 해결 방향]

입력받은 my_string, overwrite_string를 split을 통해서 String[]을 만들고, 배경이 되는 my_string을 쪼갠 my_str 배열을 for문으로 돌면서 if~else문을 통해서 조건에 따라 answer에 문자를 추가했다.
조건으로는 입력받은 s의 index부터 시작하면서, overwrite_string의 길이만큼 변경되어야하는데, length를 통해서 길이를 가져오다보니 index와 1차이가 있어서 -1을 추가하였다

여기까지 오늘 알고리즘 공부가 끝났다. 아래는 오늘의 알고리즘 진도표이다.
오늘도 알차게 시작!
알고리즘 진도표

profile
Backend

0개의 댓글