아침에 프로그래머스에 있는 ”단어 변환”이라는 문제를 풀어 보려고 했다. 이 문제는 주어진 시작 단어, 최종적으로 원하는 단어, 다수의 단어가 담긴 배열이 주어진다. 시작 단어에서 배열을 순회하는데 이때 원하는 것은 최종 단어로 변환하는 것이다. 그러나 바로 변환을 못하고 현제 단어에서 배열에 있는 단어와 비교해서 글자 하나씩만 바꿀 수 있다. 추가적으로 이 변환 거치는 수를 최소화해서 그 수를 return을 해야 했다. 결론적으로 못 풀었다. 계획부터 어떻게 새워야 할지 몰라서 일단 greedy 하게 풀었다. greedy 하게 풀었더니 역시나 다 통과되지 않고 5개 중 2개만 통과했다.
오늘 자바를 배우게 되었다. ”가장 빨리 만나는 코어 자바 9e” 1장을 읽고 자바로 todo list를 만들었다.
요구 조건
터미널 환경(콘솔)에서 입출력이 가능하다.
사용자로부터 해야 할 일을 문자열로 받는다. -> Todo List에 등록.
사용자가 완료된 일을 지울 수 있어야 한다. -> Completed List으로 이동.
사용자가 우선순위를 변경할 수 있어야 한다. (1,2,3,4 번호로 우선순위를 나타내기)
Todo의 내용이 수정 가능하다.
Todo or Completed의 아이템을 삭제할 수 있다.
의 기능들을 넣었다.
Feeling
어제만 해도 그래도 문제를 쉽게 풀어서 뭔가 많이 성장했다고 느꼈는데, 오늘 문제를 못 풀어서 또다시 나락으로 떨어진 느낌이다. 문제를 어떻게 짜야 할지 쓸 계획 자체가 생각이 안 났던 적은 오랜만인 것 같다.
오늘 Java를 처음 배우게 되었다. JavaScript를 배우고 나서 Java로 들어오니 도저히 Java에 대한 정이 들지 않는다. JavaScript를 쓰기 위해서 그냥 프런트 할까 고민 중이다. 농담이었다.
Findings
자바는 객체 지향 언어이므로 프로그램에서 객체를 조작해 일을 시킨다. 메인 메서드는 클래스 안에 선언된 함수다. main 메서드는 프로그램을 실행할 때 첫 번째로 호출하는 메서드다. 이 메서드는 객체가 없어도 작동하도록 static으로 선언한다. 패키지는 관련 있는 클래스를 모아 놓은 집합이다.
자바는 case라는 분기 처리 메서드가 있다. 이것으로 case 별로 출력할 수 있다.
자바는 배열이 넘치면 자동적으로 새로운 크기의 배열을 만들어 준다.
Scanner library를 써서 입력을 받아서 변수를 쓸 수 있다.
Future action
문제 풀이 실력이 아직도 낮으니 까먹지 말고 알고리즘을 매일 풀면서 실력을 키우도록 하자. 못 풀 것 같은 문제는 시도하는 것도 좋지만 시간 낭비하지 않기 위해서 빠른 답안지를 훔쳐보자.