전체 글

Algorithm/problem solving

Today's Algorithm(2018-10-08)

leetcode 5 이번 문제는 'Longest Palindromic Substring'입니다. Palindromic이란 말은 앞뒤로 읽어도 똑같은 문자열(회문)을 의미합니다. 예를들어 aba, abba 등이 있겠죠. 재미있는 문제라고 생각은 했지만 도무지 방향이 잡히지 않더라구요. 그래서 해답을 참고하였습니다. 다른 사람들의 해답을 보아도 비슷한 부분들이 있었는데요. 제가 고민하던 부분과 해답에서 이를 해결한 부분 중심으로 정리하도록 하겠습니다. 먼저 해답의 소스코드는 아래와 같습니다. class Solution { public String longestPalindrome(String s) { if(s.equals("")) return ""; int start = 0, end = 0; f..

TIL

Today's Dev Notes(2018-10-08)

Today's Dev Notes(2018-10-08) 안녕하세요. Brad입니다. 아침에 자전거 타면서 손 시려운게 느껴지는게 벌써 겨울이 다가왔음을 느낍니다. 주변에서 감기 걸려 고생했다고 들은 분이 계시는데요. 모두 감기 조심하세요! 걸리면 자기만 너무 손해에요. 콧물에, 두통에 정말 생각하기 싫네요. 오늘은 '좌표계산기' step2를 진행하였습니다. 제가 이전 '사다리게임' 5단계 하고 있을 때 먼저 나아가시는 몇 분들로부터 기능을 구현하는 것보다 UI로 나타내는 부분이 힘들다고 들었는데요. 그때는 그게 무슨 말인지 모르고 나라면 쉽게 할 수 있을거라고 생각하였습니다. 하지만... 정말 생각보다 간단하지 않았습니다. 오늘 과정을 진행하면서 겪었던 시행착오와 그것에 대한 해결과정을 기록해두려 합니다...

Algorithm/problem solving

Today's Algorithm(2018-10-06)

boj 1003 피보나치 수열에 대해 이름을 모르실지 몰라도 규칙을 알면 기억 나시는 분들 많으실거에요. 그만큼 간단하고 단순한데요. 보통은 재귀를 이용하여 많이 구현합니다. 오늘은 가볍게 쉬운 문제를 풀고 싶어서 백준 문제 순위에서 쉬워보이는 문제를 찾았는데요. 앞 페이지에서 쉽게 찾을 수 있었습니다. 그만큼 많이 도전한 문제란 뜻이죠! 처음 이 문제를 보고 쉽겠다는 생각이 들었습니다. 애초에 피보나치 수열의 코드를 문제에서 제공했기 때문입니다. 근데 이를 이용해서 문제를 풀었는데 시간초과가 떴습니다... 다시 문제를 자세히 보니 제한시간이 0.25초 이더라구요. 따라서 재귀의 계산을 줄여야 했고 동적 계획법을 사용해야 했습니다. 제가 생각하는 동적 계획법은 과거에 계산했던 값을 저장해두고 이후에 그 ..

TIL

Today's Dev Notes(2018-10-05)

Today's Dev Notes(2018-10-05) 안녕하세요, brad입니다. 어제 '좌표 계산기' 과제를 시작했는데 Intellij 빌드 오류 때문에 제대로 구현을 못했었는데요. 오늘은 어제 설계한 step1에 대하여 기록하고자 합니다. 어떻게 구현하였나? 좌표축은 Axis 클래스에서 값과 출력 모두 처리하였습니다. '값과 출력을 분리할 것인가?' 고려를 했었는데요. 우선은 현재 요구사항 복잡하지 않고 필요에 따라 리팩토링을 통해 쉽게 분리할 수 있을거라 판단하여 한 곳에서 처리하였습니다. 두 개의 축에 대한 값으로 생성자에서 미리 부여하였습니다. 그리는 것에 충실하도록 Y축의 경우 길이 최대값이 24부터 시작하였고 X축은 0부터 시작하였습니다. 그리면서 값을 증감하는 부분은 애초 설계할 때 boo..

Algorithm/problem solving

Today's Algorithm(2018-10-05)

boj 1914 오늘 알고리즘은 오전에 배운 '하노이탑'을 설명해보려고 했는데요. 이게 어떻게 구현할 수 있는지는 배웠지만 막상 설명하려고 생각하니 정말 감이 안잡히네요. 아직 재귀가 익숙하지 않은 것 같아요. 그래도 제가 좀 더 성장하였을 때 제대로 설명할 수 있을거라 생각하며 honux가 설명한 코드를 남겨놓으려 합니다. #include #include int count = 0; int limit; void move(int n, int src, int target) { printf("%d %d\n", src, target); } void hanoi(int n, int fr, int to) { count++; if(n == 1) { move(n, fr, to); return; } int ..

TIL

Today's Dev Notes(2018-10-04)

Today's Dev Notes(2018-10-04) 안녕하세요. Brad입니다. 드디어 '사다리게임' 을 끝내고 '좌표계산기'로 넘어오게 되었습니다! 앞서 배운 지식들을 새로운 요구사항에 맞춰 구현해보려고 하니 기대되기도 하지만 아직도 그 지식들을 제것으로 완벽하게 만든것 같지는 않아 걱정되기도 하네요. 불필요한 고민없이 단계단계마다 요구사항에 맞춰 시작해보려 합니다! 1단계는 복잡한 요구사항 없이 제한된 범위만큼 좌표축을 그리는 것입니다. 다만 여기서 어떤 것을 객체로 만들수 있을까?하는 생각이 떠올랐습니다. 오전에 Pobi의 강의대로 우선 어떤 것을 객체로 만들 수 있을지에 대해 생각해보겠습니다. 좌표축(axis) 요구사항에 X, Y 좌표 모두 최대 24까지 그린다고 했습니다. 길이 증감에 따라 길..

Brad Lee
Brad's blog