본문 바로가기
🤍 𝙋𝙍𝙊𝙂𝙍𝘼𝙈𝙈𝙀𝙍𝙎

[프로그래머스] Day2 출력, 연산

by 깅당긍 2024. 7. 3.

 

덧셈식 출력하기

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

[제한사항]
1 ≤ a, b ≤ 100

입출력 예)
입력 4 5
출력 4 + 5 = 9
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();
        int c = a+b;
        if(1 <= a && a <= 100 && 1 <= b && b <= 100){
            System.out.println(a + " + " + b + " = " + c);
        }else{
            System.out.println("조건에 맞지 않습니다.");
        }
        sc.close();
    }
}

a+b를 담은 변수를 만들어서
a+b=c로 출력 했다
c대신 (a+b)로 처리해도 됨 !


문자열 붙여서 출력하기

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

[제한사항]
1 ≤ str1, str2의 길이 ≤ 10

입출력 예)
입력 apple pen
출력 applepen
입력 Hello World!
출력 HelloWorld!
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();
        String c = a+b;
        
        if(1<=a.length() && a.length()<=10 && 1<=b.length() && b.length()<=10){
            if(!c.contains(" ")){
            System.out.println(c);
            }else{
                System.out.println("조건에 맞지 않습니다.");
            }
        }
        sc.close();
    }
}

이것도 역시 c라는 변수에 a+b를 담았다
 
!c.contains(" ") 를 사용해서 공백이 없으면
c를 출력하도록 했다

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();
        String answer = a.concat(b);
        System.out.println(answer);
    }
}

이건 다른 사람들이 사용한 방식 중 하나 !
 
concat을 사용할 생각은 못했는데
다음엔 concat 활용해봐야겠다


문자열 돌리기

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

[제한사항]
1 ≤ str의 길이 ≤ 10

입출력 예)
입력 abcde
출력 a b c d e
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        if(1<=a.length() && a.length()<=10){
            for(int i=0; i<a.length(); i++){
                char c = a.charAt(i);
                System.out.println(c);
            }
        }
        sc.close();
    }
}

시계 방향 어쩌고.. 90도 어쩌고 하지만
그냥 한글자씩 떼서 한줄로 출력하는거임
 
if문에 조건넣고
for문으로 a길이만큼 반복하도록 했다
 
한글자씩 charAt을 이용하여 담고 출력

import java.util.Scanner;

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

같은 방식이지만 조금 더 간결한 코드
정답은 없다지만 !
다른 사람들의 코드를 많이 보면서
간결화 하는 법도 배워야겠다


홀짝 구분하기

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

[제한사항]
1 ≤ n ≤ 1,000

입출력 예)
입력 100
출력 100 is even
입력 1
출력 1 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");
        }
    }
}

오랜만에 보는 짝수 홀수 구분하기
초반에 학원에서 배웠던게 새록새록 떠오른다
 
n을 2로 나눈 나머지가 0인 경우는 짝수
그렇지 않으면 홀수 처리


 

문자열 겹쳐쓰기

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

[제한사항]
my_string와 overwrite_string은 숫자와 알파벳으로 이루어져 있습니다.
1 ≤ overwrite_string의 길이 ≤ my_string의 길이 ≤ 1,0000 ≤ s ≤ my_string의 길이 - overwrite_string의 길이

입출력 예)
my_string overwrite_string s result
"He11oWor1d" "lloWorl" 2 "HelloWorld"
"Program29b8UYP" "merS123" 7 "ProgrammerS123"
입출력 예)
예제 1번의 my_string에서 인덱스 2부터 overwrite_string의 길이만큼에 해당하는 부분은 "11oWor1"이고 이를 "lloWorl"로 바꾼 "HelloWorld"를 return 합니다.

입출력 예)
예제 2번의 my_string에서 인덱스 7부터 overwrite_string의 길이만큼에 해당하는 부분은 "29b8UYP"이고 이를 "merS123"로 바꾼 "ProgrammerS123"를 return 합니다.
class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = "";
        if(overwrite_string.length() <= my_string.length() && my_string.length() <= 1000){
            String m = my_string.substring(0,s);
            answer = m+overwrite_string+my_string.substring(s + overwrite_string.length());
        }
        return answer;
    }
}

길이만큼을 어쩌고 .. 바꾼 문자열을 어쩌고..
처음에 쓱 읽고 살짝 당황했지만
침착하게 다시 읽음
 
my_string의 s번지부터 overwrite_string 길이만큼
overwrite_string 으로 바꾸라는 뜻으로 파악

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = "";
        if(overwrite_string.length() <= my_string.length() && my_string.length() <= 1000){
            String m = my_string.substring(0,s);
            answer = m+overwrite_string;
        }
        return answer;
    }
}

처음에는 m+overwrite_string까지만 처리를 했는데
그러면 HelloWorld 같은 경우는 HelloWorl까지만 출력이 된다
그래서 overwrite_string 길이만큼을 뜻하는
my_string.substring(s + overwrite_string.length())을 + 해줘야 함 !

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String before = my_string.substring(0, s);
        String after = my_string.substring(s + overwrite_string.length());
        return before + overwrite_string + after;
    }
}

이건 다른사람이 짠 코드
간결하고 눈에 딱 들어와서 감탄했다
이렇게 생각할 수도 있구나 ..