분류 전체보기
-
초보의 정규표현식 배우기일상, 생활 기록 2020. 5. 12. 22:24
이전에 정규표현식에 대해서 잠깐 들어본 적이 있었습니다. 하지만 처음 정규표현식을 검색해봤을 땐.. 무슨 외계어가 있지..? 정말 처음 봤을 땐 이상한 문자들로 이루어진 문자열들이라 알아들을 수가 없었고, 공부하고 싶지도 않았습니다. 하지만 시간이 흘러 얼마전 코딩테스트를 보면서 정규표현식을 잠깐 접하고 문자열에 대해서 어느정도 친해지고 있었습니다. 이번 YAPP에서 만들고 있는 프로젝트 중에 로그인, 회원가입 화면을 구현하고 있는데 아이디와 비밀번호에 대한 필터링이 필요했습니다. 이러한 기능을 만드려면 정규표현식이 필수적이었죠. 그래서 정규표현식을 공부하고 정리해보는 시간을 가지려고 합니다. 무슨 목적의 정규식이 필요한지 정하자 사실 정규표현식을 기능적으로만 사용하려면 검색만 하면 됩니다. 대부분의 정..
-
첫 코딩 테스트 후기일상, 생활 기록 2020. 5. 11. 14:26
예상대로 쉽지 않았다. 그럼에도 얻은 것이 많았다 머리털나고 처음 코딩 테스트를 쳐봤다. 결과는 아직 발표나지 않았지만, 예상대로 상당히 당황하고 어려웠던 느낌. 그 전까지 알고리즘에 대해서 깔짝깔짝 접해본 적은 있지만, 제대로 공부해본건 이번이 처음이었다. 하지만 시험을 준비하는 만큼 필사적으로 공부해서 단기간에 실력이 상당히 늘은 것 같다.(물론, 나의 이전 상태와 비교해서 말이다.) 결과가 어떻든 간에 알고리즘과 더 친해졌고, 나도 코딩테스트 할 수 있구나! 라고 자신감을 얻을 수 있었던 경험인 것 같다. 또, 내가 가고 싶은 회사들을 가려면 앞으로도 계속 코딩 테스트를 접해봐야겠지. 그래서 이번에 경험한 코딩 테스트 준비 과정을 기록해보려고 한다. 알고리즘을 왜 공부해야하는 지에 대한 생각 정립 ..
-
백준 1260, DFS와 BFSProblem Solving 2020. 4. 26. 00:46
오늘은 백준의 1260번 문제인 DFS와 BFS문제를 풀어봤는데요, DFS와 BFS의 개념과 구현, 그리고 인접 행렬과 인접 리스트에 대한 내용을 공부할 수 있는 아주 좋은 문제 같았습니다. 학부 수업에서 자료구조를 들으면서 DFS와 BFS, 그래프에 대해서 짧게 배운적이 있습니다만 구현을 해보고 응용하기엔 너무 얕게 배워서 오늘 이 문제를 풀면서 다시 공부하게 됐었네요. 그래프와 인접 행렬, 인접 리스트 DFS, BFS를 들어가기 전에 그래프의 개념에 대해서 알아볼 필요가 있는데요 그래프는 노드와 그 노드를 연결하는 간선을 하나로 모아놓은 자료구조입니다. 여기서 노드는 경우에 따라서 Vertex로 부르기도 합니다. 그래프는 상당히 큰 개념인데요, 트리라고 불리는 자료구조도 그래프의 일종입니다. 그래프의..
-
프로그래머스 Level2 - 탑Problem Solving 2020. 4. 24. 16:50
시간 복잡도를 항상 고려해야한다 오늘 알고리즘 문제로 프로그래머스의 '탑'문제를 풀었는데요. 검색과 비교의 문제라고 판단하고 자료구조를 배열로 해서 접근했습니다. 출력은 정확히 나오지만, 시간초과가 발생해 정답으로 인정되지 않았습니다. 이 문제는 분류가 스택/큐 입니다. 역시 출제자의 의도를 잘 파악하는 것이 중요한 것 같네요. 자료구조를 어떤 것으로 쓰냐에 따라 속도의 차이가 많이 발생하는 것 같습니다. 일단 저는 스택으로 풀지 못했지만 문제를 푼 다른 사람들의 코드를 참고해서 스택으로 수정해봤습니다. 배열로 접근한 코드 public class Solution { public int[] solution(int[] heights) { int[] answer = {}; int size = heights.l..
-
백준 10828번, 스택 자바로 구현Problem Solving 2020. 4. 22. 14:58
오늘은 백준의 10828번 문제인 스택을 풀어봤습니다. 자바로 문제를 풀었고 4번의 시도 끝에 성공했습니다. 사소한 부분에서 자주 틀리는데 이번에는 문제에서 주어진 테스트 케이스 하나만 통과했다가 다른 테스트 케이스 하나를 다시 시도해보니 잘못 구현한 부분이 있었습니다. 문제에서 주어진 테스트 케이스는 당연히 성공해야하며, 구현자가 직접 테스트 케이스를 만들어 시도해야 할 필요도 있음을 알았습니다. 또한, 백준에서 자바로 제출할시엔 반드시 메인 클래스 이름을 Main으로 해야합니다. 안그러면 컴파일시에 바로 에러가 나온다고 하네요. /** * 백준 10828문제입니다. */ import java.util.Scanner; //제출할 시엔 클래스명을 Main으로 해야합니다. public class Stack..
-
알고리즘, 문제 해결 전략부터Problem Solving 2020. 4. 22. 00:52
개발자들에게 있어서 알고리즘은 언젠가는 정복해야할, 그리고 같이 가야 할 존재인 것 같습니다. 저는 안드로이드 개발을 주로 하고 있는데 그동안 알고리즘에 대한 필요성을 잘 못느끼고 있었습니다. 하지만, 언젠가 코딩 테스트를 위해서 알고리즘이 필요할 것이라고 막연하게 생각하고는 있었죠. 그리고 최근 코딩 테스트를 위해 알고리즘에 대해 공부할 기회가 생겼습니다. 그래서 앞으로 알고리즘과 관련한 포스팅을 주로 해보려고 합니다. 알고리즘을 어떻게 공부해야할지 막연한 찰나에 이 책을 발견했습니다. 프로그래밍 대회에서 배우는 알고리즘 문제해결전략 이제 막 읽기 시작했지만 단순히 자료구조나 알고리즘에 대한 배경지식 설명이 아니라, 오히려 알고리즘과 문제에 대해서 어떻게 접근해야할지에 대해 알려주는 책이었습니다. 저 ..
-
진짜 개발은 리팩토링부터 시작된다일상, 생활 기록 2020. 4. 18. 01:27
왜 리팩토링을 해야할까? 개발을 하다보면 리팩토링이란 말을 많이 접하게 된다. 그동안 나도 뜨문뜨문 리팩토링이란 말을 들었었는데 단순히 코드를 수정하는 것으로 알고 있었다. 최근에는 기능을 빠르게 구현하고 더 좋은 코드로 작성하기 위해 수정하는 식으로 개발을 하고 있다. 어쨌든, 리팩토링이 진짜로 왜 필요한지에 대해서는 의문이 많았었다. 그래서 이번 기회에 리팩토링에 대해 알아봤다. 리팩토링이란 소프트웨어를 잘 이해할 수 있도록 가독성을 향상시키고 유지보수의 용이성과 재사용성을 높이기 위해 행하는 코드 개선 활동이다. 단, 외부적인 동작에 영향을 주어선 안된다. 소프트웨어의 기능이나 성능에 영향을 주어서는 안된다는 것이다. 이런 리팩토링은 소프트웨어를 더 쉽게 이해하게 만든다. 소프트웨어라는 것이 수명이..
-
배우고 싶다면 코드리뷰일상, 생활 기록 2020. 3. 26. 16:10
코드 리뷰를 시작하다 최근 들어서 안드로이드와 관련된 프로젝트나 대외활동을 이것저것 하기 시작했다. 자연스럽게 따라 오던 부분은 코드리뷰를 하는 것. 말로만 듣던 코드리뷰를 직접하니 여간 어려운 일이 아니었다. 하지만 개발자라면 앞으로도 쭉 코드리뷰를 하지 않겠는가. 코드리뷰에 대해서 이것저것 찾아봤다. 코드 리뷰를 어떻게 해야 할까? 일단 처음 코드리뷰를 시작했을 땐 무엇을 리뷰해야될 지 막막했다. 감히 내가 저 잘하는 사람의 코드를 리뷰한다니? 내가 보기엔 완벽하기만 한데 한 줄이라도 리뷰를 해야하니 막막하기만 했다. 보통은 코드리뷰를 하면 어떻게 효율적으로 더 코드를 줄이면서 할 수 있을지에 대해 논의하기도 하고, 코드의 작성 위치나, 함수로 묶으면 좋겠다는 등의 리뷰를 하는 것 같다. 그래도 코드..