본문 바로가기
일지/취준일기

2024_11_25 취준일기 4일차

by 알케니브 2024. 11. 25.

주말에 푹 쉬고~ 다시 열심히 가보자구

 

오늘의 계획

1. 프로그래머스 코딩 테스트

문제1.

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

제한사항: 1 ≤ a,b ≤ 100

입출력 예

  • 입력 #1: 4, 5
  • 출력 #1: 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();

        System.out.println(a + b);
    }
}

 

풀이과정

:  처음에는 이렇게 썼는데...안되길래 뭐가 문제지..? 함 

 System.out.print(a " + " b "=" a + b);

 

그러다가 아차 하고 고침. 이클립스로 할때랑 달라서 +를 넣는걸 잊어먹고 있었다.

 

int c = a + b

        System.out.println(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();
        int c = a + b;

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

 

++ 다른 사람의 풀이

System.out.printf("%d + %d = %d",a,b,a+b);

%d는 생각못했네... 메모메모


 

문제2.

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

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

입출력 예

  • 입력 #1: apple pen
  • 출력 #1: applepen
  • 입력 #2: Hello World!
  • 출력 #2: 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();
    }
}

 

풀이과정

따옴표를 썼다가 안되길래 생각해보니 그럼 진짜 a랑 b만 나오겠구나 싶어서 다시 바꿈

 

정답

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);
    }
}

 

 

 


문제3.

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

제한사항: 1 ≤ str의 길이 ≤ 10

입출력 예

  • 입력 #1: abcde
  • 출력 #1: 
    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();
    }
}

 

풀이과정

1일차에 했던 문제와 비슷한결 아닌가? 하고 하나씩 나누는 charAt와 for문을 사용했다

 

정답

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));
        }
    }
}

 

++ 다른 사람의 풀이: 이렇게 쓰는 사람도 있었다. 이것도 되게 심플한듯

for (char ch : a.toCharArray())
            System.out.println(ch);

문제4.

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

제한사항: 1 ≤ n ≤ 1,000

입출력 예

  • 입력 #1: 100
  • 출력 #1: 100 is even
  • 입력 #2: 1
  • 출력 #2: 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();
    }
}

 

풀이과정

짝수와 홀수면 2로 나누는 값을 if-else를 쓰면 될거라 생각함

if(n % 2 = 0) {
            System.out.println(n + " is even");
        } else {
            system.out.println(n + " is odd");
        }

이랬는데 안되서 뭐지..하다가 =이 아니라 ==을 써야한단걸 깨달음. 게다가 else밑의 sysout을 소문자로 썼다\

 

정답

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");
        }
    }
}

 

++ 다른사람의 풀이

삼항연산자를 사용해서 한줄에 끝낸 사람이 있다! 이거 너무 깔끔하고 멋져보임

 

System.out.print(n + " is "+(n % 2 == 0 ? "even" : "odd"));

문제5.
문자열 my_stringoverwrite_string과 정수 s가 주어집니다.

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

제한사항

  • my_string와 overwrite_string은 숫자와 알파벳으로 이루어져 있습니다.
  • 1 ≤ overwrite_string의 길이 ≤ my_string의 길이 ≤ 1,000
  • 0 ≤ s ≤ my_string의 길이 - overwrite_string의 길이

입출력 예

my_string overwrite_string s result
"He11oWor1d" "lloWorl" 2 "HelloWorld"
"Program29b8UYP" "merS123" 7 "ProgrammerS123"
  • 입출력 예 #1: 예제 1번의 my_string에서 인덱스 2부터 overwrite_string의 길이만큼에 해당하는 부분은 "11oWor1"이고 이를 "lloWorl"로 바꾼 "HelloWorld"를 return 합니다.
  • 입출력 예 #2: 예제 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 = "";
        return answer;
    }
}

 

풀이과정

문제부터 이해못함 예..? 이상한 번역가가 번역한 책 문장 읽는 기분

나만 그런게 아닌지 이 문제에 질문하기만 50개 이상이 달려있었음

문제 뚫어지게 본 결과 s의 숫자만큼의 자릿수부터 overwrite의 문자를 겹쳐써서 return하라는거라고 이해함

근데 이해하면 뭐하나 코드작성이 막막...

구글링해보니 참 다양하게 풀었더라. 그중에 가장 내가 이해하기 쉬운 코드를 참고하기로 했다

 

정답

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = "";
        
        // s의 앞부분 출력
        String front = my_string.substring(0,s);
        
        // overwrite하고 뒷자리 출력
        String behind = my_string.substring(s + overwrite_string.length(), my_string.length());
        
        // s앞부분 + 덧씌어진부분 + 뒷부분
        answer = front + overwrite_string + behind;
        
        return answer;
    }
}

 

++ 다른사람의 풀이

1.변수선언은 front와 behind가 아닌 prefix와 suffix로 썼으면 더 전문적으로 보였을듯!

 

2. 이것도 좋아보였다. 선언을 해서 my_string과 overwrite를 다 쪼갠뒤 for문을 돌려서 배열로 처리하기는 생각하지 못했다

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        char[] my_chars = my_string.toCharArray();
        char[] overwrite_chars = overwrite_string.toCharArray();
        for (int i=0; i<overwrite_chars.length; i++) {
            my_chars[s + i] = overwrite_chars[i];
        }
        return String.valueOf(my_chars);
    }
}

2. 이력서/지원/면접 준비 활동

'일지 > 취준일기' 카테고리의 다른 글

2024_11_28 취준일기 7일차  (0) 2024.11.28
2024_11_27 취준일기 6일차  (1) 2024.11.27
2024_11_22 취준일기 3일차  (1) 2024.11.22
2024_11_21 취준일기 2일차  (0) 2024.11.21
2024_11_20 취준일기 1일차  (0) 2024.11.20