목록분류 전체보기 (163)
Simple&Natural
풀이과정) 우리가 흔히 노가다라고 하는 걸 알고리즘에서는 '완전탐색' 이라는 좋은 용어로 포장한다. 사용언어 : Kotlin 풀이) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 fun solution(brown: Int, red: Int): IntArray { var answer = intArrayOf() for(i in 1..red) { if(red%i==0) { var redVert = i var redHor = red/i var brownVert = redVert+2 var brownHor = redHor+2 if(((brownHor+brownVert)*2-4)==brown) { answer = intArrayOf(brownHor, br..
가끔 구글링을 하다보면 은근 숨고분들을 보는 것 같은데 좀 기록해놔야 겠다. 가끔 참고할만한 글도 많이 남기는 듯 종종 참고해봐야... https://okky.kr/user/info/42330/activity OKKY - 회원정보 보기 #398329 게시물에 댓글을 남겼습니다. 2017-06-16 16:23:43.0 알고리즘의 정체, 가치, 그리고 왜 해야 하는가? #390859 게시물에 댓글을 남겼습니다. 2017-05-15 12:08:37.0 안드로이드 개발자가 되고 싶습니다. #386767 게시물에 댓글을 남겼습니다. 2017-04-20 10:06:20.0 한국 IT 기업 취업 준비하려 하는데 조언, 정보 부탁 드립니다. #386767 게시물에 댓글을 남겼습니다. 2017-04-1 okky.kr
풀이과정) 문제에 풀이과정을 친절히 다 써놔서 그냥 순서대로 따라가며 코드로 구현만 하면 되는 문제였다. 재귀함수에 대한 개념을 알아야 풀 수 있는 문제이다. 일단 문제의 포인트를 짚어보자면 1. 균형잡힌 괄호 문자열 2. 올바른 괄호 문자열 이 두 가지를 판단하는 로직을 짤 수 있는가이다. 1번의 경우, "(" 와 ")" 의 갯수를 비교해주면서 두 괄호 요소의 갯수가 최초로 같아지는 시점을 골라내면 된다. 2번의 경우, 괄호 요소는 반드시 "(" 로 시작해야 하며 중간에 나오는 요소들은 한 번이라도 ")" 가 많아지면 안된다. "(" 를 +1로, ")"를 -1로 가정하고 합계가 0보다 작아지는 지점이 존재한다면 이는 올바른 괄호 문자열이 아님을 의미한다. 사용 언어 : Kotlin 풀이) 1 2 3 4..
풀이과정) 처음에는 0.001초씩 1초 범위의 스코프를 움직이며 로그검색을 해보았는데 이렇게 되면 지나치게 많은 연산이 필요하다. 예를 들어 8시간의 로그를 검색하기 위해 8*60*60*1000*n(로그갯수) 번의 연산을 하게 되는데 이러면 시간초과로 문제를 풀 수가 없다. 이렇게 문제를 간단하고 무식하게 풀도록 냈을리가 없는 게 당연하지만 혹시 모르니 그냥 시도해보았다. (당연히 실패) 이후 다른 풀이를 생각하던 도중 로그의 시작과 끝을 분석하면 되겠다는 포인트를 발견. 이유인 즉슨, 한 시점에서의 로그의 갯수가 변하는 경우는 새로운 로그가 시작되거나 기존의 로그가 끝나는 순간이기 때문이다. 우선 lines의 모든 로그들을 파싱하여 logArr이라는 배열에 담아두었다. 첫 번째 요소인 startSec는..