- 문자열 뒤집기
매개변수로 받은 값이 배열 형태가 아니기 때문에,, substring을 사용하였다
class Solution {
public String solution(String my_string) {
String answer = "";
for (int i = my_string.length()-1; i >= 0 ; i--){
answer += my_string.substring(i, i+1);
}
return answer;
}
}
--> 근데 그냥 substring(i)해도 됐을 듯
Substring 문법
- String substring(int index)
- String substring(int start, int end) : 끝나는 지점은 end-1
다른 사람 풀이
//(1)
import java.util.*;
class Solution {
public String solution(String my_string) {
StringBuilder sb = new StringBuilder();
sb.append(my_string);
sb.reverse();
return sb.toString();
}
}
//(2)
class Solution {
public String solution(String myString) {
return new StringBuilder(myString).reverse().toString();
}
}
String은 불변하여 값을 변경할 수 없다.
.concat or + 를 이용할 때는 기존 String 값이 아니라 새로 값을 할당하는 것.
그래서 속도가 느려져 비효율적인데,
바로 이 때 사용하면 좋은 것이 StringBuffer와 StringBuilder.
StringBuffer와 StringBuilder는 변하기(mutable) 때문에 .append() or .delete() 통해 값을 변경 가능
* StringBuffer는 공통 메소드가 동기화되므로 multi thread 환경에서는 StringBuffer를 사용하는 것이 안전하다고 함(값이 예상치 못하게 변경되는 것을 방지)
그 외에는 더 좋은 성능을 가진 StringBuilder 사용하기!
- 직각삼각형 출력하기
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i=1; i<=n; i++){
for (int j=1; j<=i; j++){
System.out.print("*");
}
System.out.println();
}
}
}
다른 사람의 풀이
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i=1; i<=n; i++){
System.out.println("*".repeat(i));
}
}
}
-> 우아 문자열 반복하는 repeat() 메소드 같은게 있네 신기하다
- 짝수 홀수 개수
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[2];
for (int i=0; i < num_list.length; i++){
if (num_list[i] % 2 == 0) answer[0]++;
else answer[1]++;
}
return answer;
}
}
짧게 나타내봤는데,,
다른 사람의 풀이는?!
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[2];
for(int i = 0; i < num_list.length; i++)
answer[num_list[i] % 2]++;
return answer;
}
}
0과 1로만 나오는 나머지의 값을 이용하여 그거 그대로 answer배열의 index로 사용하기.. 대박
- 문자 반복 출력하기
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return
class Solution {
public String solution(String my_string, int n) {
String answer = "";
for (int i =0; i<my_string.length(); i++){
for (int j=0; j<n; j++){
answer += my_string.charAt(i);
}
}
return answer;
}
}
charAt이란 것도 배웠다! 인덱스 값 넣어주면 해당 위치에 있는 문자(char)를 출력.
사실 n번 돌아가는 for문 말고 .repeat() 메소드 쓰려고 했는데,, 걔는 문자열 메소드라.. 포기하고 for문을 썼다.
다른 사람 풀이
class Solution {
public String solution(String my_string, int n) {
StringBuilder sb = new StringBuilder();
for(char c : my_string.toCharArray()){
sb.append((c + "").repeat(n));
}
return sb.toString();
}
}
String인 my_string을 CharArray로 바꾸고 sb에 문자를 추가(string으로 바꾸면서)하면서 반복시키기... 대박!
'Algorithms' 카테고리의 다른 글
Programmers Day 8 (1) | 2023.07.19 |
---|---|
Programmers Day 7 (0) | 2023.07.18 |
Programmers Day 5 (0) | 2023.07.11 |
Programmers Day 4 (0) | 2023.07.09 |
JAVA Stream (0) | 2023.07.09 |