퍼즐게임챌린지문제설명난이도, 현재시간이 입력값으로 주어진다.그때 가지고 있는 숙련도가 있는데 숙련도보다 난이도가 높다면 (이전시간+현재시간) * 차이나는 횟수 + 현재 시간을 총 더했을 때 제한 시간보다 작아야한다. 그때의 숙련도의 최소값을 구하면 된다문제 해결 방법나는 처음에 단순 구현으로 숙련도를 1부터 늘려가서 총 시간이 제한시간보다 작을 때까지 while문을 돌렸다.그랬더니 시간초과가 났다... 그래서 숙련도의 최솟값을 찾는것, 그리고 1부터 늘려나가는건 비효율 적이라고 생각해서 그럴 때는 이진탐색 방법을 사용해야 한다고 깨달았다. start와 end 는 최솟값이랑 최대값으로 설정을 해준다.int start = Integer.MAX_VALUE;int end = Integer.MIN_VALUE;//..
CodingTest/Programmers
문제 설명 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 "콘"은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는 프로그램을 다음과 같이 개발하려고 합니다. '(' 와 ')' 로만 이루어진 문자열이 있을 경우, '(' 의 개수와 ')' 의 개수가 같다면 이를 균형잡힌 괄호 문자열이라고 부릅니다. 그리고 여기에 '('와 ')'의 괄호의 짝도 모두 맞을..