이 포스팅에서는 2020 카카오 블라인드 채용 1차 문제인 ‘괄호 변환’ 문제를 해설합니다. 본 풀이에 대한 테스트는 https://programmers.co.kr/learn/courses/30/lessons/60058에서 수행하였으며 공식 풀이와 일치하지 않을 수 있습니다.
공식 풀이는 링크를 참조하시기 바랍니다.
출처 : 2020 KAKAO 블라인드 채용 온라인 1차
링크 : https://programmers.co.kr/learn/courses/30/lessons/60058
카테고리 : 재귀 호출
난이도 : 쉬움
주어진 괄호 문자열을 올바른 괄호 문자열로 바꾸어 출력. 그 방법은 문제 설명에 같이 주어진다.
주어진대로 코드를 짜면 된다.
여기서 구현할 것은 ‘재귀 호출’, ‘균형 잡힌 문자열’ 판별, ‘올바른 문자열’ 판별이다.
균형 잡힌 문자열 판별은 맨 처음에 cnt를 0으로 초기화하고 문자열 가장 처음부터 순차적으로 읽어가면서 열기 괄호면 1을 더하고, 닫기 괄호면 1을 뺀다. 이후 cnt가 0인지 체크하여 0이면 종료한다.
올바른 문자열 판별은 균형 잡힌 문자열과 같은 방식으로 진행하되, cnt가 -1이 되는 순간이 존재한다면 올바르지 않는 것으로 판별하고, 그렇지 않으면 올바른 것으로 판별하면 된다.
def get_reverse(s): ret = “” for i in range(1, len(s) – 1): if s[i] == ‘(‘: ret += ‘)’ else: ret += ‘(‘ return ret def is_correct(s): cnt = 0 for c in s: if c == ‘(‘: cnt += 1 else: cnt –= 1 if cnt < 0: return False return True def do(s): if len(s) == 0: return “” i, cnt = 0, 0 while True: if s[i] == ‘(‘: cnt += 1 else: cnt –= 1 i += 1 if cnt == 0: break u, v = s[:i], s[i:] if is_correct(u): return u + do(v) else: return ‘(‘ + do(v) + ‘)’ + get_reverse(u) def solution(p): return do(p) | cs |
Competition 카카오 블라인드 채용 문자열 압축
유럽 여행 2주간 대학 친구와 유럽여행을 다녀왔다. 런던 출장외에 유럽 여행은 완전 처음이었는데, 좋았던 점이…
Layoff 이번 주에 또 한차례 Layoff가 있었다. 작년 1월 대규모 Layoff 이후 1년만의 일이다. 새벽…
2023 회고 큰 성공을 만든 건 없지만, 작년에 달성한 것들을 모아보자면 일단 잘리지 않고 해고를…
영주권 매일 아침 USPS 이메일과 USCIS 앱을 열어보면서 기다리던 영주권이 드디어 발급되었다. 오늘 드디어 새로…
TL;DR 이 일기는 OKR 설정의 어려움, 효과적인 마케팅 전략의 필요성, 가족 중심의 삶과 이민자로서의 경력…
TL;DR 미국 생활에 찾아온 작은 변화와 가족과의 여행 소소한 행복, 그리고 AI 기술의 급속한 발전…
This website uses cookies.