-
옹알이 (1) (c++)코딩테스트/프로그래머스 2024. 1. 12. 00:03
입력 : vector
- 1 <=
babbling
의 길이 <= 100 - 1 <=
babbling[i]
의 길의 <= 15
sol
1. for 문으로 babbling 내부 string 값 가져오기
2. for 문으로 string에 "aya", "ye", "woo", "ma" 있는지 확인하기
고민
나는 인덱스 하나마다 접근하면서 검사했었는데, 약간 지저분해 보이고 하드코딩 같다는 생각이 든다.
다른 분이 string을 따로 만들어서 s[i] 값을 더한 다음에, 조건을 만족하면 초기화하는 방식으로 해결한 것을 보았다.
훨씬 더 깔끔해보이는 코드!
+) 추가
string을 사용해서 더하는 방식으로 풀어봤는데, 시간 차이가 꽤 존재했다. 오히려 내가 풀었던 코드가 더 빠른데, 왤까..?
int solution(vector<string> babbling) { int answer = 0; string temp = ""; for (int i = 0; i < babbling.size(); i++) { temp = ""; for (int j = 0; j < babbling[i].size(); j++) { temp += babbling[i][j]; if (temp == "aya" || temp == "ye" || temp == "woo" || temp == "ma") temp = ""; if (temp.size() > 3) break; } if (temp == "") answer++; } return answer; }
vector indexing string += string push_back vector random access : O(1) string append : O(1)
* append나 +=는 더하는 문쟈열의 길이만큼 시간복잡도를 가지지만 여기서는 1글자만 더하니까 1로 취급string push_back : O(1) 변수에 접근할 때의 시간복잡도는 동일한 걸로 봐서 접근에 문제는 아닌 것 같다.
일단 생각이 나는 건 이 정도..?
- 조건에 and를 사용해서 빠르게 if문을 넘겼다.
- temp에 빈 문자열을 넣을 때, string이 새로 만들어져서 시간이 걸린다.
shin0112/programmers_cpp: programmers' coding test solutions (github.com)
출처 : 프로그래머스 코딩 테스트 연습 - 옹알이 (1)
코딩테스트 연습 - 옹알이 (1) | Programmers School'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[1차] 다트 게임 (c++) (0) 2024.01.16 명예의 전당 (1) (c++) (1) 2024.01.13 가장 가까운 같은 글자(c++) (1) 2024.01.11 합성수 찾기(c++) (0) 2024.01.11 프로그래머스 저작권 (0) 2024.01.11 - 1 <=