250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준#boj#16932#모양만들기
- 백준#BOJ#1939#중량제한
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#BOJ#8012#한동이는영업사원
- 백준#boj#12755
- 백준#BOJ#2615#오목
- 백준#BOJ#12865#평범한배낭
Archives
- Today
- Total
순간을 성실히, 화려함보단 꾸준함을
[boj : 15886] 내 선물을 받아줘2 본문
문제 : 'E' 와 'W'가 주어지고 선물을 구사과님이 어느 칸에서부터 시작하더라도 먹을 수 있도록 배치해야된다. 이때 최소의 선물만 배치해야된다.
해설 : 'E'로 시작하면 'W'를 만나지 않을때까지 전진한다. 그리고 'W'를 만나면 다시 돌아간다. 이는 'E'의 끝에 선물을 하나 놓으면 이 위치를 기준으로 왼쪽으로는 'E' 오른쪽으로는 'W'는 무조건 선물을 먹게 된다는 뜻.
ex) EEEEEEEEEEEEEEEEEEEEEEEEEEEWWWWWWWWWWWWWWWWW
그럼 다 해결된거다. 새롭게 시작되는 E만 찾아서 개수를 세어주면 된다.
#include<bits/stdc++.h>
using namespace std;
int v[1000];
string s;
void dfs(int x);
int main()
{
int n,ans=0;
cin >> n >> s;
for (int i = 0; i < s.length(); i++)
if (!v[i] && s[i] == 'E') {
dfs(i);
ans++;
}
cout << ans;
return 0;
}
void dfs(int x)
{
if (v[x])return;
v[x] = 1;
if (s[x] == 'E')dfs(x + 1);
else dfs(x - 1);
}
'알고리즘,SQL > 백준,BOJ' 카테고리의 다른 글
[boj : 16569] 화산쇄설류 (0) | 2021.01.02 |
---|---|
[boj : 15922] 아우으 우아으이야!! (0) | 2020.12.24 |
[boj : 11565] 바이너리 게임 (0) | 2020.12.23 |
[boj : 12904] A와 B (0) | 2020.12.23 |
[boj : 13273] 로마숫자 (0) | 2020.12.23 |