7/25 토요일 이번 주 토요일에도 대표님 특강이 있었기에 저번 주와 마찬가지로 알고리즘 책을 받고 문제를 어떻게 풀지 설계를 30분간 진행하였다. 알고리즘 책은 위와 같이 생겼다. 공기청정기 문제 풀이 오늘 특강 시간에 풀어 볼 문제는 공기청정기라는 문제이다. 이번 문제는 다소 난해하여 어떠한 문제인지 파악하는데만 오랜시간이 걸렸다. 문제의 핵심 부분만 발췌하자면 위와 같다. 오늘 풀어 볼 공기청정기라는 문제를 간략히 설명하자면 2차원 공간에 공기청정기가 있고 그 공기청정기에서 매 초마다 위쪽으로는 시계방향 아래쪽으로는 반시계 방향으로특정 조건을 만족하면 신선한 공기가 확산이 되어 공기의 상태가 변하게 된다. 이렇게 바뀐 공기의 상태값을 기반으로 입력받은 N초 뒤의 모든 공기 상태 값의 총합을 구하는 ..
7/18 토요일 알고리즘 잡스를 시작한 지 2주일이 되었다. 지난주 토요일 하루만 특별히 알고리즘 잡스 대표님의 특강이 있는 줄 알았는데 알고 보니 매주 토요일마다 특강이 진행되는 듯하다. 오늘도 지난주와 마찬가지로 알고리즘 잡스 대표님의 특강이 있다고 한다. 알고리즘 책을 받고 설계 30분을 한 뒤 온라인 특강을 시작하였다. 특강의 내용은 저번 주와 마찬가지로 문제가 주어졌을 때 어떻게 문제에 접근을 하고, 설계를 하고 풀이를 하는지에 대한 설명이었다. 이번 주 특강 문제는 "회전 탑"이라는 문제이고 저번 주 문제였던 "회전판과 로봇"처럼 다양한 알고리즘이 한 군데 혼합되어있는 문제였다. 손진호 대표님은 이 문제를 풀기 위해서는 한 문제를 여러 개의 문제로 쪼개서 보는 능력을 키워야 한다고 강조하셨다...
7/11 토요일 알고리즘 잡스를 시작한 지 오늘로 꼭 1주일 되는 날이다. 오늘은 알고리즘잡스 대표님의 특강이 있다고 한다. 특강 이전에 알고리즘 책도 주셨다. 알고리즘 잡스에서 만든 알고리즘 책이었는데 안에 내용이 괜찮아 보여 실제로 책을 시중에 낸다 해도 나름 잘 팔릴 거 같은 느낌을 받았다. 특강 방식은 YouTube를 통한 원격 강의였다. 온라인 강의를 많이 본 적이 있기에 나는 오프라인 강의보다 오히려 이러한 강의 방식이 더 귀에 잘 들어오는 것 같다. 가끔씩 이렇게 특강이 있을 듯하다. 특강의 내용은 "회전판과 로봇"이라는 문제를 푸는 것인데 대표님이 문제를 어떻게 접근하는지, 설계를 어떻게 할 것인가와 어떠한 알고리즘이 필요한지, 필요한 알고리즘은 어떻게 구현할 것인지에 대한 설명을 해주셨다..
정말 오래간만에 공부다운 공부를 하고 있는 것 같다. 딱히 특정 기업에 취업하고 싶다기보다는 그냥 순수하게 알고리즘 자체를 잘하고 또 인정받고싶다. 아직 눈의 띄게 성장한 부분은 없다. 공부를 시작한 지 얼마 되지 않았기도 하고 나에게 알고리즘에 대한 절대적인 공부의 양이 부족하기 때문이다. 부족한 실력을 늘리기 위해 공부의 양을 늘렸다. 공부 시간을 늘릴 수밖에 없었던 것이 개인별로 7/11일 토요일까지 Lv7까지 진도를 나가는 것으로 예정이 되어 있었기에 어떻게든 따라갔어야 했다. 월요일 Lv4에 머물러 있었지만 화요일, 수요일을 활용하여 Lv6까지 먼저 예습을 해왔다. 이대로라면 토요일까지 Lv7까지 나가는 진도에 대한 걱정은 안 해도 될 것 같다. 알고리즘 잡스에서는 매주 목요일, 토요일마다 시험..
언제부터일까? 나의 개발 능력의 발전은 멈춘 것만 같다. 뛰어난 개발자가 되고 싶어 학교에서 공부도 열심히 했고 실무경험도 2년 반이나 쌓았지만 아직도 모르면 도움을 요청해야 하는 그저 그런 개발자 신세에서 벗어나지 못하고 있다. 무엇이 문제였을까? 가만히 생각해보면 지금까지 나는 공부를 하는 척만 해왔지 진짜 공부를 해본 적이 없었던 것 같다. 지금까지 나는 공부라기보다는 돈을 벌기 위한 행위에만 집중해왔던 게 아닐까? 개발자의 길을 걸어가면서 느끼는 것이 있다. 개발자로서 행복하고 싶다면 실력이 있어야 한다는 것을 나 스스로에게 당당해야 한다. 어떻게 보면 개발은 문제가 생기고 그것을 해결해나가는 과정의 연속이라고 볼 수 있다. 그런 면에서 본다면 개발자로서 가져야 할 중요한 역량 중 하나에 문제를 ..
개발자나 코딩을 배우는 학생들이라면 알고리즘 연습이나 간단한 코드를 짜고 실행해보고 싶을 때가 종종 있으실겁니다. 이럴때 간단한 코드 한줄을 실행해보기 위해 무거운 프로그램들을 깔기는 시간도 많이 걸리고 환경을 세팅하기도 귀찮습니다. 이럴때 웹 컴파일러를 사용하면 간단하게 코드를 짜고 실행할 수 있습니다. Tutorialspoint(https://www.tutorialspoint.com/) 이곳에서는 거의 모든 언어를 작성하고 컴파일 할 수 있습니다. 그리고 회원가입하면 작성한 코드도 저장할 수 있습니다. 자신이 작성하고 싶은 언어를 클릭한 후 코드를 작성하고 상단에 Execute 버튼을 눌러주면 오른쪽 Result 창에 컴파일 된 결과가 나오게 됩니다. 하지만 대부분의 웹 컴파일러들은 속도가 느리기에 ..
어노테이션(Annotation)이란? 자바에서 어노테이션은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종을 말합니다. 보통 @기호를 앞에 붙여서 사용하며 JDK 1.5 버전 이상에서부터 사용이 가능합니다. 자바 어노테이션은 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동합니다. 어노테이션은 메타데이터라고 볼 수도 있습니다. 메타데이터란 어플리케이션이 처리해야 할 데이터가 아니라 ,컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일하고 처리할것인지를 알려주는 정보입니다. 어노테이션의 사용처 1. 컴파일러에게 코드 문법 에러를 체크하도록 정보를 제공 2. 소프트웨어 개발 툴이 빌드나 배치 시 코드를 자동으로 생성할 수 있도록 정보를 제공 3. 실행 시 특정 기..
스트림(Stream)이란? 스트림은 자바8부터 추가된 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자입니다. Iterator와 비슷한 역할을 하지만 람다식으로 요소 처리 코드를 제공하여 코드가 좀 더 간결하게 할 수 있다는 점과 내부 반복자를 사용하므로 병렬처리가 쉽다는 점에서 차이점이 있습니다. [Java] 람다식(Lambda Expressions) -> 사용법 & 예제 Iterator과 Stream의 코드 비교 ArrayList list = new ArrayList(Arrays.asList(1,2,3)); Iterator iter = list.iterator(); while(iter.hasNext()) { int num = iter.next(); System.out.p..