728x90
반응형
선택 정렬 정리내용
[백준]
1406번: 에디터
[틀린 풀이 - 시간 초과]
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.IOException;
import java.util.LinkedList;
public class Main{
public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static BufferedWriter bf = new BufferedWriter(new OutputStreamWriter(System.out));
public static String editor(LinkedList<String> stringList, LinkedList<String> commList) {
int cursor = stringList.size(); //0,1,2,3,4 -> 4개
for(int i=0; i < commList.size(); i++) {
switch ( commList.get(i).substring(0,1) ) {
case "L": {
if(cursor > 0) { // 맨 앞이 아니면
cursor--;
}
break;
}
case "D": {
if(cursor < stringList.size()) { // 맨 뒤가 아니면
cursor++;
}
break;
}
case "B": {
if(cursor > 0) { // 맨 앞이 아니면
stringList.remove(cursor-1);
cursor--;
}
break;
}
case "P": {
if(cursor == 0) {
stringList.add(0, commList.get(i).substring(commList.get(i).length()-1) );
}
else if(cursor > 0) {
stringList.add( cursor, commList.get(i).substring(commList.get(i).length()-1) );
cursor++;
}
break;
}
} // end switch-case
}
return String.join("",stringList);
}
// main 함수
public static void main(String[] args) {
try {
String st = br.readLine(); // 문자열 입력
// 문자열 리스트
LinkedList<String> stringList = new LinkedList<String>();
// 명령어 리스트
LinkedList<String> commList = new LinkedList<String>();
for(int i=0; i<st.length(); i++) {
stringList.add(String.valueOf(st.charAt(i)));
}
int m = Integer.parseInt(br.readLine()); // 명령어 개수 입력
// 명령어 입력 받은 후 리스트에 저장
for(int j=0; j<m; j++) {
String comm = br.readLine();
commList.add(comm);
}
bf.write( editor(stringList, commList) );
bf.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
* list를 String 형식으로 출력할 경우 : String.join("추가할 문자", 리스트)
시간 초과가 나는 이유를 잘 모르겠다.
LinkedList를 이용해서 풀었는데 찾아보니 스택을 이용해서 풀어야 시간 초과가 나지 않는다고 한다.
반응형
참고한 풀이 :
https://geehye.github.io/baekjoon-1406/#
728x90
'코딩 테스트' 카테고리의 다른 글
[자료구조와 알고리즘: JAVA 백준] 코딩테스트 연습 - 선택 정렬5 (0) | 2022.03.11 |
---|---|
[자료구조와 알고리즘: JAVA 백준] 코딩테스트 연습 - 선택 정렬1 (0) | 2022.03.11 |
[자료구조와 알고리즘: JAVA 프로그래머스] 코딩테스트 연습 - 입국심사 (0) | 2022.02.25 |