Algorithm/Greedy

POJ#3617 Best Cow Line

밤이2209 2017. 2. 1. 20:26

POJ#3617 Best Cow Line


* 문제

* 풀이

1.
처음 문자와 마지막 문자가 크거나 작은 경우 뿐만 아니라
두 문자가 같은 경우도 잘 생각해보아야 한다.

예) GFABFG

2. 
문자 수가 80이 될 때마다 new line을 삽입해야 한다.
여기서 String의 length를 이용하지 말고 (\n이 length에 포함되므로)
loop 횟수를 이용해야 한다.



import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
* POJ#3617 Best Cow Line
* http://poj.org/problem?id=3617
*/
public class Main {

public static void main(String[] args) throws IOException {

int N; // cows
StringBuffer S = new StringBuffer();
StringBuffer T = new StringBuffer();

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

N = Integer.parseInt(br.readLine());

for (int i = 0; i < N; i++) {

S.append(br.readLine());
}

int a = 0;
int b = N - 1;
int num = 0;
boolean left;

while (a <= b) {


left = false;

for (int i = 0; a + i <= b; i++) {

if (S.charAt(a + i) < S.charAt(b - i)) {

left = true;
break;
} else if (S.charAt(a + i) > S.charAt(b - i)) {

left = false;
break;
}
}

if (left) {

T.append(S.charAt(a++));
} else {

T.append(S.charAt(b--));
}

if (++num % 80 == 0) {

T.append("\n");
}

}

System.out.println(T);
}
}


'Algorithm > Greedy' 카테고리의 다른 글

BOJ#6195 Fence Repair  (0) 2017.02.02
BOJ#7676 Saruman's Army  (0) 2017.02.02
BOJ#1700 멀티탭 스케쥴링  (0) 2017.02.01
BOJ#3109 빵집 (PLINOVOD)  (0) 2016.12.30
BOJ#1041 주사위  (0) 2016.11.13