N 개의 단어가 들어오면 뒤집어 출려해라
입력
1.입력받을 단어 개수
2.입력한 수에 맞는 각 영어 알파벳 입력
출력
입력 받은 단어들을 뒤집어서 출력
입력예시
2
foot
home
출력예시
toof
emoh
이렇게 풀어봤는데 원하는 값이 안나옴..
강사님 강의
이렇게 했는데 안나온다...
강사님 강의 보고 알았음.. 와..
array를 system.out.println으로 한번에 출력하려고 하는 모자란놈... 반성하자..
처음에는 solution 메소드에 arr 값만 넘겨줬으나 처음 배열의 크기를 정해야 해서
함께 넘겨줬다.
solution 으로 넘긴 배열을 담아주고
이중 포문을 통해서
처음에 배열에 담긴 단어를 선택하고
그 후 배열안의 각 단어의 문자 하나하나를 구분하여
str에 담아주는데 담아줄때는 뒤에 오는 단어가 맨 앞으로 가게 담아줬다
이렇게 하고 return 되는 answer 어레이에 담아주면 문제가 해결된다.
import java.util.Scanner;
public class Main {
public String[] solution(int num, String[] arr) {
String[] answer = new String[num];
String[] arr2 = arr;
for(int i=0; i<num; i++) {
String str ="";
for(int j=0; j<arr2[i].length(); j++) {
str=arr2[i].charAt(j)+str;
}
answer[i]=str;
}
return answer;
}
public static void main(String args[]) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int num = kb.nextInt();
String[] arr = new String[num];
for(int i =0; i<num; i++) {
arr[i] = kb.next();
}
for(String x : T.solution(num,arr)) {
System.out.println(x);
}
}
}
강사님 강의
String 은 String으로 무엇인가 바꾸고 더하고 하면 객체를 계속 만들어서 메모리가 많이 쓰이는데
StringBuilder 는 하나의 객체를 이용해서 작동하기 때문에
메모리를 효율적으로 사용이 가능하다.
일단 주목해야할건 ArrayList 를 따로 생성해서 했다라는점.
그리고
StringBuilder 를 reverse()를 이용해서 원하는 동작을 한 후에
어레이리스트에 담아준다.
특정 단어끼리만 바꾸려는 조건이 있을 때.
대칭되는 단어만 바꾸라는 조건이 있을 경우.
String 을 Char[] 배열에 toCharArray를 통해 하나씩 담아준다.
이때 양 끝에 있는 문자들끼리 바꿔주기 위해서 lt 와 rt 라는 int를 지정하고
해당 위치의 데이터를 바꿔주는 코드를 짠 후 rt가 lt 보다 클때까지만 돌아가는 while 문을 만든다.
char 에 담은 문자들에서
lt 는 0 rt 는 전체 길이에서 -1 (index 위치를 표시하기 위함으로)
처음 s[lt] 의 문자값을 temp 라는 char 변수에 담아주고
temp 에 담아준다 그 후 s[lt]에 s[rt] 를 넣어주고 s[rt]에는 temp 에 넣은 s[lt] 값을 넣어준다
이후 lt 는 1 증가 rt 는 1 감소 한 값으로 반복작업을 하다가 while 문은 rt>lt 인 상황까지만 동작해준다.
String.valueOf(s) 는 char 화 된 배열들을 스트링화 시켜준다
String 변수에 담은 값들은 다시 arrayList에 담아준다.
코테 관련해서 많이 부담스러웠는데 강의를 통해 푸는 방법들을 배우니 이 시간이 즐겁습니다.
진짜 기능하나하나 다양한 방법으로 잘 가르쳐주십니다.
출처 : 자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 대시보드 - 인프런 | 강의 (inflearn.com)
'알고리즘 > Java 코딩 테스트 준비' 카테고리의 다른 글
[java] 회문(앞에서 뒤에서 읽을 때 같은 문자) 문자열 풀기 (0) | 2023.01.24 |
---|---|
[Java] 특정 조건에 부합되는 문자 뒤집기(알파벳만 위치 바꾸기) (0) | 2023.01.23 |
[Java] 문장 속 단어(문장 속 가장 긴 단어를 출력하시오) (0) | 2023.01.22 |
[Java]대소문자 변환 문제 (0) | 2023.01.21 |
[Java]문자열에 포함된 문자 개수 찾기. (0) | 2023.01.21 |
댓글