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

[프로그래머스] Day1 출력

by 깅당긍 2024. 7. 2.

파이널 과제를 마무리하고 (1등 했습니다 우하하)
엊그제 종강을 했어요
 
6개월 ..
처음 시작할 때는 엄청 길게 느껴졌는데
끝날때가 되니 정말 짧게 느껴지더라구요
 
무튼 종강을 했다는 건
제가 찐찐찐 백수가 되었다는 겁니다
 
백수인 내 모습
굉장히 낯설고 뭐 .. 그러네요
 
프로젝트 깃허브랑 티스토리에 정리도 해야하고
배운거 까먹지 않도록
꾸준히 프로그래머스도 풀려고 합니다

프로그래머스에서 일별로 풀 수 있게
정리가 잘 되어있더라구요
 
그냥 풀고 말아버리면 내껄로 만들 수 없으니
정리하려고 만든 폴더
 
말이 좀 길어졌지만
조급해하지말고 힘내서 열심히 해보자 다짐하며
스스로한테 하는 말 !


문자열 출력하기

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

[제한사항]
1 ≤ str의 길이 ≤ 1,000,000 str에는 공백이 없으며, 첫째 줄에 한 줄로만 주어집니다.

입출력 예)
입력 HelloWorld!
출력 HelloWorld!
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.nextLine();
        int b = 1000000;
        if(a.length() >= 1 && a.length()<=b && !a.contains(" ")){
            System.out.println(a);
        }else{
            System.out.println("error");
        }
           sc.close();
    }
}

 
오랜만에 자바 하려니까 이렇게 하는거 맞나싶고;
 
자동완성에 적응해버려서
하나하나 다 치려니 손가락이 당황해버림 ..
 
손 놓으면 안된다는게 무슨 말인지 피부로 느꼈다
 
그래도 1~2문제 푸니까 슬슬 떠오름
 
제한사항에 맞게 if문에 조건넣고
공백이 없게 하기 위해서 contains 사용
 
length 옆에 () 괄호 빼먹지 말자
contains(" ") 얘도 마찬가지 괄호 절대 챙겨 !


a와 b 출력하기

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

[제한사항]
-100,000 ≤ a, b ≤ 100,000

입출력 예)
입력 4 5
출력 a = 4 b = 5
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num = 100000;
        
        int a = sc.nextInt();
        int b = sc.nextInt();
        
        if(-num<=a && b<=num){
            System.out.println("a = " + a);
            System.out.println("b = " + b);
        }else{
            System.out.println("error");
        }

    }
}

번거로우니 100000은 num으로 변수처리 했다
 
마찬가지로 if문 써서 조건 넣고
System.out.println()으로 출력 !


문자열 반복해서 출력하기

[문제 설명]
문자열 str과 정수 n이 주어집니다.
str이 n번 반복된 문자열을 만들어 출력하는 코드를 작성해 보세요.

[제한사항]
1 ≤ str의 길이 ≤ 101 ≤ n ≤ 5

입출력 예)
입력 string 5
출력 stringstringstringstringstring
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();
        
        if(1<=str.length() && str.length()<=10){
            for(int i=1; i<=n; i++){
                System.out.print(str);
            }
            System.out.println();
        }
        sc.close();
    }
}

문자열을 n번 만큼 반복하여 출력하기 위해 for문 사용
처음에는 int i=0; i<=n; i++ 를 했는데 에러가 남
 
당연하지
 
i가 0부터 시작인데 i<=n이면 n+1인 상황
 
때문 i<=n 처리를 하고싶으면
i는 1부터 시작해야된다
i가 0부터 시작한다면 i<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.println(str.repeat(n));
    }
}

코드는 답이 딱 정해져 있지 않다
 
나는 for문으로 풀었지만
다른 사람의 코드를 보니 repeat 반복 메서드를 사용했다
 
프로그래머스는 이렇게
다양한 방법을 접할 수 있어서 좋은 것 같다 !


대소문자 바꿔서 출력하기

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

[제한사항]
1 ≤ str의 길이 ≤ 20str은 알파벳으로 이루어진 문자열입니다.

입출력 예)
입력 aBcDeFg
출력 #1AbCdEfG
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String answer = "";
        if(1<=a.length() && a.length()<=20){
            for(int i=0; i<a.length(); i++){
                char c = a.charAt(i);
                if(Character.isUpperCase(c)){
                    answer += Character.toLowerCase(c);
                }else{
                    answer += Character.toUpperCase(c);
                }
            }
            System.out.println(answer);
        }
    }
}

대문자는 소문자로 바꾸고
소문자는 대문자로 바꾸기
 
어떻게 접근을 해야할지 고민됐다
 
우선 if문으로 조건넣고
for문으로 입력받은 a 길이만큼 반복하여
한글자씩 변수 처리
 
char c = a.charAt(i);
예를 들어 a가 "Hello"이고 i가 1이면
a.charAt(1)은 e를 반환한
 
변환한 값을 담기 위해 비어있는 변수를 하나 만들었다
대문자일 경우 toLowerCase() 처리하여 소문자로 변환
그렇지 않으면 toUpperCase() 처리하여 대문자로 변환


특수문자 출력하기

[문제 설명]
다음과 같이 출력하도록 코드를 작성해 주세요.

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

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

솔직히 처음에 당황했다
그냥 출력하면 되잖아 왜..? 했는데
역슬래쉬를 출력하려면
앞에 \ 역슬래쉬를 한번 더 붙여야 한단다
 
근데 왜 에러가..?
싶었는데 " 를 문자로 출력하려면
마찬가지로 앞에 역슬래쉬 \를 붙여야 한다더라
 
\" 처리하면 "를 문자로 인식한다는거지
 
또 하나 배웠다 !

import java.util.Scanner;

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

이건 다른 사람이 짠 코드..를 봤는데
이거보고 진짜 배꼽 잡았다 ㅋㅋㅋㅋㅋㅋㅋ
이 코드에 있는 댓글이 더 웃겼음
"몸을 쓰면 머리가 편하다"
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 하지만 풀었죠?