전체 글 682

[클린코드] 깨끗한 코드란 무엇인가?

Clean Code 『CLEAN CODE(클린 코드)』은 오브젝트 멘토(OBJECT MENTOR)의 동료들과 힘을 모아 ‘개발하며’ 클린 코드를 만드는 최상의 애자일 기법을 소개하고 있다. 소프트웨어 장인 정신의 가치를 심어 주며 book.naver.com 로버트 마틴의 클린코드를 읽으며, 프로젝트 하나를 깨끗한 코드로 바꾸려 한다. 우선, 깨끗한 코드란 무엇인지 알아보자. 깨끗한 코드란, 유지보수가 쉬운 코드를 의미한다. 유지보수가 어려우면 새로운 코드에 투자할 시간이 줄고 간단한 문제가 반복적으로 발생한다. 버그를 발견하거나 운영환경이 변하거나 신규변경사항이 생기거나 버그 방지 방안을 모색하는 등의 유지보수 상황에서 유지보수를 쉽게 할 수 있는 코드가 깨끗한 코드라 할 수 있다. 그러므로 깨끗한 코드..

후기/도서후기 2021.07.10

[JAVA] 백준 1065번 한수 : 등차수열

1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net 1. 문제 추상화 입력받은 수보다 같거나 작은 수 중, 각 자리 수가 등차수열을 이루는 수(한수)의 개수를 구하시오. 2. 알고리즘 나의 풀이 반복문을 돌려 1의 자리부터 하나씩 체크한다. 1. current = num % 10, next = (num/10)%10 이면 d = next - current이고 nextnext = next + d 이다. 2. 다음 자리수로 이동하면 next가 current가 된다. 3. 이전 자리수에서의 nextnext와 현재 자리수의 ..

문제풀이 2021.07.10

[JAVA] 백준 3052번 나머지 : 중복값 제거

3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 1. 문제 추상화 1차 추상화 10개의 입력 받은 수를 42로 나누었을 때 나오는 서로 다른 나머지가 몇 개 있는지 출력하시오. 2차 추상화 10개의 나머지 중 중복을 제거하여 서로 다른 나머지 개수를 구하시오 2. 알고리즘 HashSet 자료구조를 활용하여 중복제거하기 3. 풀이 import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.Out..

문제풀이 2021.07.10

[JAVA] 백준 1546번 평균 : 교환, 결합, 분배법칙

1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 1. 문제 추상화 원래 성적에서 향상된 성적의 평균을 구하시오. 2. 알고리즘 다항식을 결합, 분배, 교환 법칙을 활용하여 단순화시키면 반복을 줄일 수 있다. 입력된 과목의 개수 = n ( n이 3이라고 가정 ) 입력된 세 과목 점수 = a, b, c 세 과목 중 최고 점수 = M avg = ( ( a/M * 100 ) + ( b/M * 100 ) + ( c/M * 100 ) ) / 3 // 분배법칙 적용 = ( ( a + b+ c ) * ( 100 / M..

문제풀이 2021.07.10

[JAVA] 백준 4673번 셀프넘버 : 아리토스테네스의 체

4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net 1. 문제 추상화 1 ~ 10000 중 셀프 넘버인 수를 출력하시오. 2. 알고리즘 - 아리토스테네스의 체 boolean 배열을 만들어 셀프넘버인 수와 아닌 수를 True와 False로 구분 에라토스테네스의 체 - 위키백과, 우리 모두의 백과사전 수학에서 에라토스테네스의 체는 소수를 찾는 방법이다. 고대 그리스 수학자 에라토스테네스가 발견하였다. 알고리즘[편집] 2부터 소수를 구하고자 하는 구간의 모든 수를 나열..

문제풀이 2021.07.10

[ JAVA ] 스트림이란? ( 바이트 기반 스트림 , 문자 기반 스트림 )

스트림(Stream)에 대해서 파헤쳐보자. [ JAVA ] 문자 인코딩(Character Encoding)이란? 인간과 컴퓨터가 대화하려면 어떻게 할까? 인간의 언어는 문자, 이미지, 동영상, 소리 등이 있다. 그러나 컴퓨터는 1과 0밖에 모른다. 그러므로 우리는 문자, 이미지, 동영상, 소리를 1과 0에 대응 lordofkangs.tistory.com [ JAVA ] JVM이 문자열을 UTF-16 방식으로 저장하는 이유 포스팅 전 이 글은 아래 사이트 글을 토대로 한 저의 추측임을 알립니다. Why Java char uses UTF-16? Recently I read lots of things about Unicode code points and how they evolved over time and ..

Dev/JAVA 2021.07.08

[ JAVA ] JVM이 문자열을 UTF-16 방식으로 저장하는 이유

포스팅 전 이 글은 아래 사이트 글을 토대로 한 저의 추측임을 알립니다. Why Java char uses UTF-16? Recently I read lots of things about Unicode code points and how they evolved over time and sure I read http://www.joelonsoftware.com/articles/Unicode.html this also. But something I couldn't find... stackoverflow.com 윈도우는 기본적으로 MS사가 자체 개발한 EUC-KR의 확장형인 MS949 인코딩 방식을 사용한다. 그래서 윈도우 OS에 설치된 이클립스는 파일 인코딩 방식이 디폴트로 MS949가 지정되어 있다. ( ..

Dev/JAVA 2021.07.06

[ JAVA ] 문자 인코딩(Character Encoding)이란?

인간과 컴퓨터가 대화하려면 어떻게 할까? 인간의 언어는 문자, 이미지, 동영상, 소리 등이 있다. 그러나 컴퓨터는 1과 0밖에 모른다. 그러므로 우리는 문자, 이미지, 동영상, 소리를 1과 0에 대응하여 표현해야 한다. 문자표(Character Set) 특히 문자를 1과 0으로 표현하려면 문자표가 있어야 한다. 대표적인 문자표는 '아스키 코드표'가 있다. 아스키 코드표는 7bit가 만들어 낼 수 있는 이진수 조합을 문자와 대응한 표이다. 총 128가지 표현 가능하다. 하지만 128가지는 영어 알파벳 표현에는 문제 없지만 세계 각국의 문자 표현은 불가능하다. 그래서 탄생한 것이 16bit를 활용한 유니코드이다. 유니코드는 16bit이기에 216가지, 즉 65536가지 문자 표현이 가능하다. 16비트 고정폭..

Dev/JAVA 2021.07.05

[ JAVA ] 바이트 스트림 vs 문자 스트림

[ JAVA ] InputStream, OutputStream 프로그램 실행은 보조기억장치(Disk)에 저장된 프로그램이 RAM에 할당됨을 의미한다. 이때 할당된 RAM 영역을 System(시스템)이라 부른다. 시스템은 안팎으로 상호작용한다. 밖에서 들어오는 데이터 lordofkangs.tistory.com 지난 포스팅에서 스트림(Stream)에 대해서 알아보았다. 스트림(Stream)은 프로그램 안팎으로 들어오거나 나가는 바이트 흐름을 의미한다. 바이트 스트림 vs 문자 스트림 기본적으로 스트림에는 두 가지 종류가 있다. 1. 바이트 스트림 2. 문자 스트림 '바이트 스트림'은 데이터를 1byte 단위로 읽는다. 반면에 '문자 스트림'은 2byte 단위로 읽는다. 파일은 OS에 영향을 받는다. 그러므로..

Dev/JAVA 2021.06.30