본문 바로가기

전체 글

(77)
[2022-1-3]프로그래머스 연습 문제 리팩토링 리팩토링 이유 어제 푼 프로그래머스 Level1 - 키패드 누르기 문제에서 코드 속도는 나쁘지 않았지만 가독성이 너무 떨어져서 푸는 도중에 계속 헷갈리고 반복적으로 실수가 나왔다. 지금 내 수준에서 할 수 있는 만큼 리팩토링을 하여 가독성을 최대한 높혀보려 한다. [TIL] - [2022-1-2]알고리즘 문제 풀이, 자바 프로젝트 생성 및 예제 개발 - 어제한 부분 수정 사항 1. Enum 어제 약간 보고 써본 Enum을 조금 더 공부해봤다. Effective Java 아이템34,35 를 참고하고 추가로 검색도 해보면서 개발했다. 1) enum 클래스명 Vertical ->Column 키패드가 세로 라인으로 한줄 두줄 세줄 있으니까 이를 나타내려고 Vertical이라는 네이밍을 썻었는데 의미가 잘 안맞는..
[2022-1-2]알고리즘 문제 풀이, 자바 프로젝트 생성 및 예제 개발 프로그래머스 Level1 - 키패드 누르기 class Solution { enum Vertical{ LEFT, MIDDLE, RIGHT } public String solution(int[] numbers, String hand) { StringBuilder answer = new StringBuilder(""); Hand leftHand = new Hand('*',Vertical.LEFT); Hand rightHand = new Hand('#',Vertical.RIGHT); for(int number : numbers){ char charNumber = Character.forDigit(number,10); if(getVertical(number) == Vertical.LEFT){ leftHand.se..
[2022-1-1] 자바 객체지향, SOLID 법칙 SOLID SRP: 단일 책임 원칙(Single repsonsibility priciple) 한 클래스는 하나의 책임만 져야한다. 코드에 변경에 대해서 최대한 자유로울 수 있도록 개발하는 것. 즉 코드의 변경이 있을 때 이로인한 파급 효과가 적으면 좋은 SRP를 잘 지켰다고 할 수 있다. OCP: 개방-폐쇄 원칙(Open/closed principle) 소프트웨어 요소는 확장에는 열려 있으나 변경에는 닫혀 있어야 한다. 다형성을 활용해 구현. 인터페이스를 활용해 최소한의 변경으로 확장 할 수 있다. 하지만 변경을 완벽하게 피하진 못한다. 이에 대해 Spring Framework가 통해 변경 없이 구현가능 하도록한다.(Spring 이 객체지향적인 어플리케이션 개발을 위한 프레임워크라는 개념) LSP: 리스..
[2021-12-30,31] 프로그래머스 연습 + 정규표현식 어제 프로그래머스에서 코딩테스트 연습에서 신규 아이디 추천 문제를 풀었다. 매개변수로 받은 문자열 new_id를 문자열을 규칙에 따라 가공하여 추천 아이디를 반환하는 문제였는데, 학교에서는 C로만 알고리즘문제를 풀었었기 때문에, 익숙하진 않지만 이것저것 검색해가면서 재밌게 문제를 풀었다. class Solution { public String solution(String new_id) { String answer = ""; String processingId = new_id; processingId = executeStep1(processingId); //대문자 -> 소문자 processingId = executeStep2(processingId); //알파벳,.,-,_ 문자를 제외한 문자 제거 proc..
[Spring 은 무엇일까]Spring 공부 시작 지금까지 Spring 으로 몇 번의 간단한 웹 어플리케이션과 API를 개발했었다. 하지만 다시 처음부터 Spring을 공부하면서 단순히 웹 어플리케이션 프레임워크 라고 정의하기에는 너무 많은 구성요소들이 존재한다고 느껴졌다. 당장 Spring의 공식 페이지에서는 Spring Framework, Boot, Data, Security, Session, HATEOAS 등 20가지가 넘는 프로젝트들이 존재한다.(프로젝트들는 프레임워크, 라이브러리, API 등 다양하다.) 내가 지금까지 사용해봤던 Express.js, React, 안드로이드 등의 프레임워크들은 조금 사용해보면 벡 엔드, 프론트엔드, 안드로이드 프론트를 위한 프레임워크라는 것을 알 수 있었다. 그러나 Spring 에서는 현재 서비스는중단 됐지만 안..