일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SWEA
- dfs
- BFS
- 알고리즘
- 완전탐색
- 에라토스테네스의 체
- 백준
- 동적 계획법
- DP
- sw expert academy
- 구현
- 맛집
- 삼성 SDS 대학생 알고리즘 특강
- 소수
- 잠실
- 다이나믹 프로그래밍
- dynamic programming
- C++
- 백트래킹
- PS
- koitp
- hackerrank
- 시뮬레이션
- 스택
- 브루트포스
- 삼성 기출
- 해커랭크
- 그리디
- BOJ
- Algorithm
- Today
- Total
목록너비 우선 탐색 (2)
펭로그
문제 링크 : https://boj.kr/2178 지난번에 풀었던 BOJ 7576 토마토 문제보다 훨씬 쉬운 BFS 문제인듯 하다.토마토 문제에서 잡았던 대부분의 기본 개념을 그대로 가지고 풀었다.토마토 보다 이 문제를 더 먼저 풀었으면 좋았을걸.. 먼저 이 문제는 입력 자료형이 공백으로 구분지어져있지 않기 때문에 1. std::istringstream 를 split 하여 입력받기2. char형 그대로 입력 받는 방법3. 스트링 클래스의 getline(std::cin, input); 사용4. scanf("%1d", &input); 처럼 형식지정자로 1자리만 받도록 하기등등 다양한 방법을 활용하여 입력 받아야 한다. 이 외에도 getch나 gets 등등 아주 많다.scanf를 사용하는게 제일 편하긴 하지만..
문제 링크 : https://boj.kr/7576 이 문제보다 기본 개념의 문제는 BOJ 2178 미로 탐색을 참고 컨셉을 잡는 데에 상당히 어려울 수 있지만 알고보면 기본적인 BFS 문제인 것 같다.map을 int형 컨테이너로 하나 만들어 입력 정보를 받고 이 정보를 visited로 사용하면 된다.현재 탐색하는 위치 정보는 별도의 구조체를 만들어 여기에 x, y 좌표와 BFS 탐색의 몇번째 단계에 해당하는지 level 변수를 추가하였다.입력 받을 때 익은 토마토를 발견하면 그 즉시 바로 큐에 담는다.큐에 담긴 순서대로 BFS를 수행하면 문제가 쉽게 풀리게 된다.BFS를 다 수행한 이후엔 다시 한번 전수조사를 해서 안익은 토마토를 체크했다. 12345678910111213141516171819202122..