Make Unreal REAL.
article thumbnail
Level 0. 약수 구하기

Level 0. 약수 구하기 1과 n은 무조건 포함되므로 생성 시 초기화해준다. n까지 반복할 필요 없이 제곱근보다 작거나 같은 경우까지만 반복하고 제수(Divisor)와 몫(Quotient)을 함께 추가해줘도 된다. vector에 삽입한 후 sort() 함수를 실행하면 O(nlog n) 복잡도를 갖게 된다. 애초에 레드-블랙 트리를 사용하여 정렬된 상태를 유지하는 set에 삽입하는 것 역시 O(nlog n)의 복잡도를 갖는다. 나는 코드 줄을 줄이고 이해하기 쉬운 코드를 짜기 위해 후자를 택했다. #include #include #include #include using namespace std; vector solution(int n) { float square_root = sqrt(n); set s..

article thumbnail
Level 0. 순서쌍의 개수

Level 0. 순서쌍의 개수 n이 제곱근의 제곱인 경우를 처음에 더해준다. 1 ~ n까지 모두 순회할 필요 없이 제곱근보다 작은 수까지만 확인하고 한 번에 2씩 더해주면 된다. #include #include using namespace std; int solution(int n) { float square_root = sqrt(n); int answer = (pow(square_root, 2) == n); for (int i = 1; i < square_root; ++i) answer += !(n % i) * 2; return answer; }

article thumbnail
Level 0. 삼각형의 완성조건 (2)

Level 0. 삼각형의 완성조건 (2) 길이의 최솟값부터 최댓값까지의 개수이다. 자 2개를 맞대어 돌린다고 생각하면 쉽다. #include #include using namespace std; int solution(vector sides) { return (sides[0] + sides[1]) - abs(sides[0] - sides[1]) - 1; }

article thumbnail
Level 0. OX퀴즈

Level 0. OX퀴즈 예전에 Stack을 활용해서 다항식 파싱했던 방법이 가물가물한데 이 문제는 항의 개수가 2개로 정해져 있어 그럴 필요까지는 없었다. istringstream을 이용해 파싱을 진행하여 해결했다. 벡터 내에서 메모리가 재할당되는 것을 막기 위해 emplace_back 대신 필요한 만큼 크기를 미리 할당하여 사용했다. #include #include #include using namespace std; vector solution(vector quiz) { size_t size = quiz.size(); vector answer(size); for (int i = 0; i < size; ++i) { istringstream iss(quiz[i]); int n1, n2, nResult;..

article thumbnail
Level 0. 안전지대

Level 0. 안전지대 폭탄과 인접한 칸들만 위험 지역으로 표시하기 때문에 깊이 1까지만 수행하는 BFS라고 볼 수도 있다. 나는 원소에 접근할 때 범위를 검사하기보다는 vector::at() 함수와 예외 처리를 활용했다. 폭탄이 있을 경우 인접 칸들을 위험 지역(2)으로 표시하고 마지막에 안전 지역(0)의 개수를 세어 해결했다. #include #include #include #include using namespace std; void setDanger(vector& board, int i, int j) { for (int k = i - 1; k

article thumbnail
Level 0. 옹알이 (1)

Level 0. 옹알이 (1) 정규 표현식을 이용하여 해결했다. regex_replace 시에 마지막에 regex_constants::format_first_only 파라미터를 주면 첫 번째 매치만 교체할 수 있다. 일치된 문자열을 길이만큼 '_'로 바꾼 후 모든 문자가 '_'로 바뀌었는지 확인하였다. #include #include #include using namespace std; int solution(vector babbling) { int answer = 0; for (string s : babbling) { size_t length = s.length(); vector words = {"aya", "ye", "woo", "ma"}; for (string word : words) s = reg..

검색 태그