문제 : boj25193
결국 중요한건 음식의 리스트를 '원하는 대로' 조정할 수 있다는 점이다.
그럼 'CCCCA' 와 같은 경우를 생각해보자. 어떻게 해야 연속된 C의 최댓값을 최소화시킬 수 있을까? 'CCACC'처럼 A로 나누면 된다.
'CCCCCAB'와 같은 경우엔 어떨까? 마찬가지로 최대한 C를 그 이외의 음식으로 잘게 나누어야 한다. 'CCACCBC'처럼 나누면 될 것이다. 그렇다면, C의 개수를 C가 아닌 것들의 개수로 나누면 될 것임을 알 수 있다. C가 아닌 것을 A라고 한다면 다음과 같은 식을 계산하면 된다(|X|는 X의 개수를 의미함). +1을 한 이유는 예를들어 1개의 벽으로 나눌 수 있는 구역은 2개이고, 2개의 벽으로는 3개가 된다. 그때문에 +1을 해준 것이다. 올림을 하는 이유는 5/2=2.5인데, 내려버리면 당연히 답이 되지 않는다. 무조건 올려줘야한다.
이 때 항상 코드를 짤 때는 오차의 위험을 막기 위해 어쩔 수 없는 경우(기하문제 풀때..)를 제외하고는 double을 사용하지 않는게 더 좋다. 따라서 올림 처리는 'C%(A+1)'가 0이 아니라면 +1을 해주는 것으로 대신할 수 있다.
코드 : github
...
private void solution() throws Exception {
int n = nextInt();
String s = nextLine();
int cnt = 0;
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == 'C')
cnt++;
}
System.out.println(cnt/(n-cnt+1) + (cnt%(n-cnt+1)!=0?1:0));
}
...
'PS > BOJ' 카테고리의 다른 글
[자바] 백준 25195 - YES or yes (boj java) (0) | 2022.05.16 |
---|---|
[자바] 백준 25194 - 결전의 금요일 (boj java) (4) | 2022.05.16 |
[자바] 백준 25192 - 인사성 밝은 곰곰이 (boj java) (0) | 2022.05.16 |
[자바] 백준 25191 - 치킨댄스를 추는 곰곰이를 본 임스 (boj java) (0) | 2022.05.16 |
[자바] 백준 14426 - 접두사 찾기 (boj java) (0) | 2022.05.16 |
댓글