본문 바로가기

전체 글618

백준 JAVA 문제 풀 때 유용한 템플릿 (by 류호석님) 백준 JAVA 문제풀이 템플릿 입력받는 용도입니다. input 메서드에서 바로 변수를 정의하여 사용할 수 있습니다. 본 템플릿의 출처는 "류호석"님입니다. import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; import java.util.StringTokenizer; public class Main { static FastReader scan = new FastReader(); //정답은 sb에.. 2022. 11. 1.
[백준/자바] 11720 숫자의 합 [백준/자바] 11720 숫자의 합 📌 문제 N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. ⚔ 입력 첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. 📣 출력 입력으로 주어진 숫자 N개의 합을 출력한다. 풀이 참고 : Do it! 알고리즘 코딩테스트 - 자바 편 💎 문제분석하기 입력값이 얼마나 클지 알 수 없다. 따라서 int, long과 같은 숫자형으로 담을 수 없다. 먼저 문자열 형태로 입력값을 받는다. 이를 개별적으로 바꾸고, 다시 숫자형으로 변환해 더한다. 예를 들어 => "1234" => '1', '2', '3', '4' => 1 + 2 + 3 + 4 📜 슈도코드 작성하기 N값 입력받기 길이 N.. 2022. 11. 1.
코드 한 줄에 점(.)을 하나만 허용했는가? - 우아한테크코스 우테코 클린코드 #8 코드 한 줄에 점(.)을 하나만 허용했는가? - 우아한테크코스 우테코 클린코드 #8 이전글에 이어 우아한테크코스에서 요구하는 클린코드 원칙들을 살펴본다. 에서는 한 줄에 한 점만 사용하는 규칙을 주장하며 다음과 같이 적고 있다. 종종 하나의 동작에 대해 어떤 객체가 맡고 있는지 구분하기 어려울 때가 있다. 여러 개의 점이 들어 있는 코드 몇 줄을 들여다보기 시작하면 책임 소재의 오류를 많이 발견하기 시작한다. 어떠한 코드 한 줄에서라도 점이 하나 이상 있으면 그른 곳에서 동작이 일어나고 있다는 뜻이다. 어쩌면 객체는 다른 두 객체를 동시에 다루고 있을지도 모른다. 이 경구 그 객체는 중개상, 즉 너무 많은 사람들에 대해 지나치게 알고 있는 꼴이다. ... 디미터의 법칙("친구하고만 대화라")이 좋은 출발.. 2022. 11. 1.
[독서 기록] 자바 코딩의 기술, 사이먼 하러, 요르그 레너드, 리누스 디에츠, 심지현, 길벗 자바 코딩의 기술 전문가의 코드와 비교하면서 배운다 코딩 스킬을 개선하는 가장 좋은 방법은 전문가의 코드를 읽는 것이다. 오픈 소스 코드를 읽으면서 이해하면 좋지만, 너무 방대하고 스스로 맥락을 찾는 게 어려울 수 있다. 그럴 땐 이 책처럼 현장에서 자주 발견되는 문제 유형 70가지와 해법을 비교하면서 자신의 코드에서 개선할 점을 찾는 것이 좋다. 적절한 코드를 작성하는 법을 배운다 너무 과하지 않으면서 간결하게, 군더더기 없이, 딱 필요한 만큼만 있는 코드를 작성하는 방법을 배워보자. BufferedReader를 br로 선언하는가? buffered로 선언하는가? 왜 reader로 선언해야 한다고 해법을 제시할까? 이 책은 변수명을 어떻게 짓는가, 주석은 어떻게 써야 하는가부터 시작해서 단계별로 주제를 .. 2022. 11. 1.
getter/setter 없이 구현했는가? - 우아한테크코스 우테코 클린코드 #7 3개 이상의 인스턴스 변수를 가진 클래스를 구현하지 않았는가? - 우아한테크코스 우테코 클린코드 #7 이전글에 이어 우아한테크코스에서 요구하는 클린코드 원칙들을 살펴본다. 핵심 로직을 구현하는 도메인 객체에 getter/setter 사용을 지양해 캡슐화의 개념을 실현하라는 의미로 해석된다. 이 지침은 DTO(Data Transfer Object)인 데이터 전달을 목적으로 설계되는 객체에 있어서는 적용하지 않는다. 이는 앞의 언급된 '핵심 로직을 구현하는 도메인 객체' 조건과 부합하는 내용이다. 당연히 데이터 전달을 위해서는 속성을 꺼내고 수정할 수 있는 getter와 setter가 필요할 것이기 때문이다. 즉, 비즈니스 로직의 구현에 있어서는 필요한 내용을 해당 객체들이 착실히 구현하라는 객체 지향의 원.. 2022. 10. 31.