티스토리 뷰
삼성전자 SW역량테스트와 유사하게 현대자동차에서도 Softeer라는 알고리즘 문제푸는 사이트가 생겼습니다.
아직 문제는 별로 없는것 같은데, 현대자동차에서도 삼성전자와 유사하게 역량테스트를 진행하려는 것으로 보입니다.(이미 두번정도 했나봐요.)
오늘은 Softeer 사이트의 문제 중 하나인 장애물인식프로그램을 풀어보겠습니다.
Softeer 409, 장애물인식프로그램 문제 개요
소프티어 Softeer, 장애물인식프로그램 문제 링크 ▼
Softeer
제한시간 : C/C++(1초), Java/Python/JS(2초) | 메모리 제한 : 128MB 입력형식 입력 값의 첫 번째 줄에는 지도의 크기 N(정사각형임으로 가로와 세로의 크기는 같으며 5≤N≤25)이 입력되고, 그 다음 N줄에는
softeer.ai
장애물인식프로그램 문제는 정사각형 모양의 지도를 입력받고, 상 / 하 / 좌 / 우로 탐색하여 0이 아닌 연결된 장애물(1)영역 별 블록 수를 구하고, 장애물 영역의 수 + 각 장애물 영역의 장애물 수를 오름차순 출력하는 문제입니다.
백준 사이트의 기본 DFS, BFS문제 수준의 난이도로 볼 수 있는 문제입니다.(solved.ac 기준 실버1 정도) Softeer사이트 기준, 별2개 짜리 난이도로 나와있는 문제입니다. 바로 cpp언어로 문제 풀어보겠습니다.
Softeer 409, 장애물인식프로그램 문제 cpp 풀이
![](https://blog.kakaocdn.net/dn/cu6EUY/btriJoYgma4/ipoxWB7D5MuF2x7FFRzPlK/img.png)
먼저 cpp 표출 입출력 헤더, 벡터와 인트로정렬(내장 sort함수)를 사용하기 위해 헤더를 선언하고, std 네임스페이스 또한 사전정의했습니다. NxN 그래프의 N값 입력을 받기 위한 변수 N, 또한 선언했습니다. (ans 변수는 시용하지 않았습니다. 무시부탁드려요.)
15 ~ 17행) 그 외에 그래프를 기록할 G, 방문체크용 배열 chk, 정답 기록용 ansList를 벡터로 선언했습니다.
19 ~ 20행) 상하좌우 방문에 사용할 좌표정보 dx, dy와 방문횟수 카운팅용 변수 cnt도 선언했습니다.
![](https://blog.kakaocdn.net/dn/3fC6l/btriJnZlVLz/h9Qu2E8C2LbxwUzCTFukdK/img.png)
DFS, BFS중 저는 DFS로 문제를 풀어보았습니다.
현재 좌표를 기준으로 상하좌우 4방향으로 방문을 시도하는데, 그래프 밖을 나가거나, 장애물이 없는 도로(0)인 경우에는 방문하지 않습니다.
방문하지 않았던 장애물인 경우 카운팅을 하고 깊이우선탐색을 이어나가며, 각 영역의 장애물 수를 카운팅 할 수 있습니다.
![](https://blog.kakaocdn.net/dn/IdORH/btriSJ0BgKt/yMOGmBnkoCLtWhX9orxR6K/img.png)
메인함수 구현부입니다.
35 ~ 40행) 먼저 입력받은 N에 맞게 G, chk 사이즈를 설정해줍니다. 입력예시의 숫자가 다닥 다닥 붙어있는 형태이므로, "%01d"의 포맷으로 그래프를 입력받아줍니다.
47 ~ 53행) 이후 0 <= i < N, 0 <= j < N의 영역에 대해 차례대로 DFS를 돌려주며 영역의 갯수와 각 영역 별 장애물 수를 ansList에 기록해줍니다. 이후, ansList를 오름차순 정렬 후 정답을 출력해줍니다.
Softeer의 2단계 문제, 장애물 인식 프로그램 문제는 기본적인 DFS, BFS 접근이 가능하면 쉽게 풀 수 있는 문제였습니다. 아래는 정답 제출 결과 및 전체소스코드입니다. 다음 문제풀이때 뵙겠습니다. 의견 지적 언제든 환영하구요. 즐거운 하루되세요~
제출결과 및 장애물 인식 프로그램 소스코드 링크
![](https://blog.kakaocdn.net/dn/bEL9lQ/btriQ5QTPx7/LaSJ0yRarfEFrfmtUpPO10/img.png)
Add repo, 장애물인식프로그램_409, DFS, cpp 풀이 · applebuddy/SofteerAlgorithmPS@16c2dce
Permalink This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. Browse files Add repo, 장애물인식프로그램_409, DFS, cpp 풀이 Loading branch information Showing 2 changed files with 60 a
github.com
'알고리즘 정보 > C++ 알고리즘' 카테고리의 다른 글
Softeer 대회 예선 1번문제, 비밀메뉴 cpp 문제풀이 (1) | 2021.11.21 |
---|---|
Softeer 연습문제 2단계, 금고털이 그리디알고리즘 cpp풀이 (0) | 2021.11.07 |
백준 BFS 구현 알고리즘, 16236 아기상어, C++ 문제풀이 (0) | 2021.10.22 |
C++언어 알고리즘 cin, cout사용 시 실행속도 단축시키는법 (0) | 2019.05.25 |
알고리즘 백준, 프로그래머스 문제풀며 실력 상승 중 (0) | 2019.05.22 |
- Total
- Today
- Yesterday
- swift reduce
- Swift 알고리즘
- uikit
- 프로토콜
- 백준알고리즘
- Protocol
- 백준swift
- 알고리즘
- swift string
- swift문제
- swift 기초
- Collection
- publisher
- 프로그래머스swift
- 자연어처리
- swift
- 개발자문서
- SwiftUI
- ios
- 컬렉션
- createML
- 알고리즘문제
- 스위프트
- swift언어
- swift 문자열
- 부스트코스
- swift알고리즘
- CoreML
- 프로그래머스
- 김프매매
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |