주말에 푹 쉬고~ 다시 열심히 가보자구
오늘의 계획
1. 프로그래머스 코딩 테스트
문제1.
두 정수 a, b가 주어질 때 다음과 같은 형태의 계산식을 출력하는 코드를 작성해 보세요.
제한사항: 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.
두 개의 문자열 str1, str2가 공백으로 구분되어 입력으로 주어집니다.
입출력 예와 같이 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_string, overwrite_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 |