오늘의 계획
1. 코드 공부
내용
2. 프로그래머스 코딩 테스트
문제1.
문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다. my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항:
- 1 ≤ my_string의 길이 ≤ 1,000
- my_string의 원소는 영소문자로 이루어져 있습니다.
- 1 ≤ index_list의 길이 ≤ 1,000
- 0 ≤ index_list의 원소 < my_string의 길이
입출력 예
my_string | index_list | result |
"cvsgiorszzzmrpaqpe" | [16, 6, 5, 3, 12, 14, 11, 11, 17, 12, 7] | "programmers" |
"zpiaz" | [1, 2, 0, 0, 3] | "pizza" |
- 입출력 예 #1: 예제 1번의 my_string에서 인덱스 3, 5, 6, 11, 12, 14, 16, 17에 해당하는 글자는 각각 g, o, r, m, r, a, p, e이므로 my_string에서 index_list에 들어있는 원소에 해당하는 인덱스의 글자들은 각각 순서대로 p, r, o, g, r, a, m, m, e, r, s입니다. 따라서 "programmers"를 return 합니다.
- 입출력 예 #2: 예제 2번의 my_string에서 인덱스 0, 1, 2, 3에 해당하는 글자는 각각 z, p, i, a이므로 my_string에서 index_list에 들어있는 원소에 해당하는 인덱스의 글자들은 각각 순서대로 p, i, z, z, a입니다. 따라서 "pizza"를 return 합니다.
class Solution {
public String solution(String my_string, int[] index_list) {
String answer = "";
return answer;
}
}
풀이과정
:
정답
class Solution {
public String solution(String my_string, int[] index_list) {
String answer = "";
String[] stringArr = my_string.split("");
for(int i = 0; i < index_list.length; i++) {
answer += stringArr[index_list[i]];
}
return answer;
}
}
++ 다른사람의 풀이
문제2.
음이 아닌 정수를 9로 나눈 나머지는 그 정수의 각 자리 숫자의 합을 9로 나눈 나머지와 같은 것이 알려져 있습니다.
이 사실을 이용하여 음이 아닌 정수가 문자열 number로 주어질 때, 이 정수를 9로 나눈 나머지를 return 하는 solution 함수를 작성해주세요.
제한사항:
- 1 ≤ number의 길이 ≤ 100,000
- number의 원소는 숫자로만 이루어져 있습니다.
- number는 정수 0이 아니라면 숫자 '0'으로 시작하지 않습니다.S
입출력 예
number | result |
"123" | 6 |
"78720646226947352489" | 2 |
- 입출력 예 #1: 예제 1번의 number는 123으로 각 자리 숫자의 합은 6입니다. 6을 9로 나눈 나머지는 6이고, 실제로 123 = 9 × 13 + 6입니다. 따라서 6을 return 합니다.
- 입출력 예 #2: 예제 2번의 number는 78720646226947352489으로 각자리 숫자의 합은 101입니다. 101을 9로 나눈 나머지는 2이고, 실제로 78720646226947352489 = 9 × 8746738469660816943 + 2입니다. 따라서 2를 return 합니다.
class Solution {
public int solution(String number) {
int answer = 0;
return answer;
}
}
풀이과정
: 위에거랑 비슷할듯...? 합을 sum으로 선언했다
정답
class Solution {
public int solution(String number) {
int answer = 0;
int sum = 0;
String list[] = number.split("");
for(int i = 0; i < list.length; i++) {
sum += Integer.parseInt(list[i]);
}
answer = sum % 9;
return answer;
}
}
++ 다른사람의 풀이
문제3.
문자열 my_string과 이차원 정수 배열 queries가 매개변수로 주어집니다. queries의 원소는 [s, e] 형태로, my_string의 인덱스 s부터 인덱스 e까지를 뒤집으라는 의미입니다. my_string에 queries의 명령을 순서대로 처리한 후의 문자열을 return 하는 solution 함수를 작성해 주세요.
제한사항:
- my_string은 영소문자로만 이루어져 있습니다.
- 1 ≤ my_string의 길이 ≤ 1,000
- queries의 원소는 [s, e]의 형태로 0 ≤ s ≤ e < my_string의 길이를 만족합니다.
- 1 ≤ queries의 길이 ≤ 1,000
입출력 예
my_string | queries | result |
"rermgorpsam" | [[2, 3], [0, 7], [5, 9], [6, 10]] | "programmers" |
- 입출력 예 #1: 예제 1번의 my_string은 "rermgorpsam"이고 주어진 queries를 순서대로 처리하면 다음과 같습니다.
|queries|my_string|
|---|---|
||"rermgorpsam"|
|[2, 3]|"remrgorpsam"|
|[0, 7]|"progrmersam"|
|[5, 9]|"prograsremm"|
|[6, 10]|"programmers"| - 따라서 "programmers"를 return 합니다
class Solution {
public String solution(String my_string, int[][] queries) {
String answer = "";
return answer;
}
}
풀이과정
: 얘는 좀 어려워서 찾아봤다... 대부분이 for문안에 뒤집을 부분의 첫번째와 마지막을 선언하였다. 그리고 substring을 이용하여 문자열을 자르고 reverse 메소드를 이용하는 방법의 코드가 맘에 들어 참고하였다
정답
import java.lang.StringBuilder;
class Solution {
public String solution(String my_string, int[][] queries) {
StringBuilder sb = new StringBuilder(my_string);
for(int i = 0; i < queries.length; i++) {
int first = queries[i][0];
int last = queries[i][1];
String substring = sb.substring(first, last + 1);
StringBuilder reverseSub = new StringBuilder(substring).reverse();
sb.replace(first, last + 1 , reverseSub.toString());
}
String answer = sb.toString();
return answer;
}
}
++ 다른사람의 풀이
문제4.
제한사항:
입출력 예
- 입출력 예 #1
- 입출력 예 #2
풀이과정
:
정답
++ 다른사람의 풀이
문제5.
제한사항:
입출력 예
- 입출력 예 #1
- 입출력 예 #2
풀이과정
:
정답
++ 다른사람의 풀이
3. 이력서/지원/면접 준비 활동
'일지 > 취준일기' 카테고리의 다른 글
2025_01_14 취준일기 19일차 (0) | 2025.01.14 |
---|---|
2024_12_19 취준일기 18일차 (1) | 2024.12.19 |
2024_12_12 취준일기 16일차 (0) | 2024.12.12 |
2024_12_11 취준일기 15일차 (0) | 2024.12.11 |
2024_12_09 취준일기 14일차 (3) | 2024.12.09 |