티스토리 뷰
이 글에서는 프로그래머스 - 전화번호 목록 문제에 대해 다뤄보겠습니다. 문제 풀이는 C++로 이루어져 있고 함께 들어가 있는 개념들도 간단히 정리 해보는 형식으로 작성되었으므로 오타등의 오류가 있을 수 있습니다. 오류 발견시 댓글로 꼭 말씀해주세요! 시작해볼까요?
풀이 1
몇일 전까지 분산 시스템 과제 중 하나였던 udp socket programming에서 remote file access와 관련된 다양한 기능들을 c++로 구현하다보니 string class와 관련된 검색을 한 시간에 못해도 열번은 하지 않았나 싶습니다. 당시에 할 때는 같은 내용을 자꾸 찾고 또 찾고 하다보니 이렇게 기억에 안남을까 답답해 하고는 했는데 그 때 그렇게 찾으면서 했던 노력들이 오늘 이 문제를 풀려고 남아 있었던 것인가 봅니다 키키키 남지 않는 과제는 없으니 열허분 과제 열심히 하자구횻ㅋㅋ
for문 내에 첫 번째 if문인 longPhone.length() <= shortPhone.length() 문구가 없다면 정확성 테스트는 통과할 지라도 효율성 테스트는 통과하지 못합니다. 왜냐하면 vector의 양 끝단에서 시작한 i 와 j가 교차가 되는 시점을 지나 중복되게 find를 실행할 수 있게 되기 때문입니다. 즉, 한번은 (하단 그림 참조) shortPhone = "12" 일 때 longPhone = "3456" 이었다가 다른 한 번은 shortPhone "3456", longPhone = "12"가 되는 순간이 오기 때문입니다.
채점 결과 : 정확성 테스트(84.6) + 효율성 테스트(15.4) = 100.0
풀이 2
풀이 1 대로 풀어서 아주 무난하게 통과를 한 후 룰루랄라 다른 사람들의 풀이를 들어가봤는데 댐잇~ 제가 문제를 풀며 간과한 사실이
[1] 문자열이 내부에 있는 것을 묻는 문제가 아니라 접두어 인지를 묻는 문제
[2] sorting의 alphabetical order는 length 와는 전혀 상관 없다는 것 (즉, sorting을 했을 경우 12 다음 1234가 오는 것이 당연한데 12 - 234 - 345 - 1234 - 3456가 될 것이라고 생각했던 것이죠...ㅎ)
이로써 다시 한 번 문제를 똑바로 제대로 읽어야 하는 이유를 체감하고 있습니다.
채점 결과 : 정확성 테스트(84.6) + 효율성 테스트(15.4) = 100.0
'CS > 알고리즘' 카테고리의 다른 글
[프로그래머스] K번째 수 (0) | 2020.05.03 |
---|---|
[프로그래머스] 위장 (0) | 2020.05.03 |
[프로그래머스] 완주하지 못한 선수 (0) | 2020.04.30 |
[C++] 알고 쓰자 라이브러리 ① <string> (0) | 2019.12.22 |
[C++] 자료형 무시하지 마라 (0) | 2019.12.19 |
- Total
- Today
- Yesterday
- 컴과졸작
- 컴퓨터공학
- 코테
- 커넥트재단
- swacademy
- 부스트캠프2020
- 알고리즘
- 코딩테스트
- OS
- 운영체제
- 개발자인턴
- nosql
- 삼성
- 졸업작품
- 프로그래머스
- 데이터분석
- ios
- 컴공졸작
- 소프트웨어아카데미
- 부캠
- 보안
- 부스트캠프
- 소프트웨어역량시험
- firebase
- RxSwift
- 삼성소프트웨어아카데미
- 인턴
- SWIFT
- C++
- TableView
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |