티스토리

잔뉴의 메모장
검색하기

블로그 홈

잔뉴의 메모장

zannew.tistory.com/m

웬만하면 다 기록하자

구독자
1
방명록 방문하기

주요 글 목록

  • 어댑터 패턴 (Adapter Pattern) 기존 코드를 클라이언트가 사용하는 인터페이스의 구현체로 바꿔주는 패턴 가장 좋은 예시는 110v → 220v 로의 변환 패턴의 구성 요소 타겟이 되는 인터페이스만을 사용하는 클라이언트 Adaptee에 해당하는 구현체 클래스 클라이언트와 구현체를 연결해주는 Adapter 클래스 장점 기존 코드 변경 없이 인터페이스 구현체를 만들어 재사용할 수 있다. 기존 코드가 하던 일과 특정 인터페이스 구현체로 변환하는 작업을 각기 다른 클래스(어댑터)로 분리하여 관리할 수 있다. 단점 새로운 클래스가 생겨 복잡도가 증가할 수 있다. 기존 코드에서 해당 인터페이스를 구현하도록 수정하는 것이 좋은 선택일 수 있다. 사용된 예시 자바 java.util.Arrays#asList(T...) java.util.Collection.. 공감수 0 댓글수 0 2022. 8. 15.
  • [데알] 주어진 시각에서 특정 숫자 찾기(Python) ■ 문제 정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오. 예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야 하는 시각이다. - 00시 00분 03초 - 00시 13분 30초 반면에 다음은 3이 하나도 포함되어 있지 않으므로 세면 안 되는 시각이다. - 00시 02분 55초 - 01시 27분 45초 ■ 소스코드 # 1 n = int(input()) count = 0 for i in range(n + 1): for j in range(60): for k in range(60): if '3' in str(i) + str(j) + str(k): count += 1 print(c.. 공감수 0 댓글수 0 2021. 8. 16.
  • 다중 검색 구현 Current status : search type을 따로 지정하지 않고 필요한 검색어들만 입력 또는 선택 후 검색 problem 1. 검색 항목이 많은데 쿼리스트링을 어떻게 구성할 것인지?? [solving] get방식으로 보내면 글자수 제한이 있고 uri가 너무 길어지는 게 아닐까하는 생각이 들어서 post로 보내볼까 했는데 잘못된 생각이었다. 글자수 256자 제한은 사실이 아니었다. 크롬만 해도 "Chrome limits URLs to a maximum length of 2MB for practical reasons and..."라고 하는데 한글이라고 해도 1백만인데..? 이건 굳이 크게 고민할 내용이 아니었던 것 같다. param model을 하나 만들어 놓고 form태그에서 get방식으로 보내고.. 공감수 0 댓글수 0 2021. 4. 13.
  • [자바 스터디] #14 - 제네릭 ▣ 목표 자바의 제네릭에 대해 학습하세요. ▣ 학습할 내용 제네릭 사용법 제네릭 주요 개념 (바운디드 타입, 와일드 카드) 제네릭 메소드 만들기 Erasure ▶ 14-1 제네릭 사용법 ▷ 제네릭스란? 제네릭스는 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스 컴파일 시 타입 체크를 해주는 기능이다. 객체 타입을 컴파일 시 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄일 수 있다. 타입 안정성을 높인다는 것은 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄여준다는 뜻이다. ▷ 제네릭스의 장점 타입 안정성을 제공한다. 타입 체크와 형변환을 생략할 수 있으므로 코드가 간결해 진다. ▷.. 공감수 0 댓글수 0 2021. 3. 10.
  • [자바 스터디] #12 - 애노테이션 ▣ 목표자바의 애노테이션에 대해 학습하세요.▣ 학습할 내용애노테이션 정의하는 방법@retention@target@documented애노테이션 프로세서 ▶ 12-1 애노테이션 정의하는 방법▷ 애노테이션이란?프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이 바로 애노테이션이다. 애노테이션은 주석(comment)처럼 프로그래밍 언어에 영향을 미치지 않으면서도 다른 프로그램에게 유용한 정보를 제공할 수 있다는 장점이 있다.※ 참고로 애노테이션(annotation)의 뜻은 주석, 주해, 메모라는 뜻을 가지고 있다. ▷ 자바에서 제공하는 표준 애노테이션과 메타 애노테이션애노테이션설명@Override컴파일러에게 오버라이딩하는 메서드라는 것을 알림@Deprecated앞으로 사용하.. 공감수 0 댓글수 0 2021. 3. 1.
  • [자바 스터디] #10 - 멀티쓰레드 프로그래밍 ▣ 목표 자바의 멀티쓰레드 프로그래밍에 대해 학습하세요. ▣ 학습할 내용 Thread 클래스와 Runnable 인터페이스 쓰레드의 상태 쓰레드의 우선순위 Main 쓰레드 동기화 데드락 ▶10-1 Thread 클래스와 Runnable 인터페이스 쓰레드 공부 시작에 앞서 프로세스와 쓰레드에 대해 알아보았다. ▷ 프로세스(Process)란? 프로세스란 단순히 실행 중인 프로그램이라고 할 수 있다. 즉 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말합니다. 이러한 프로세스들은 프로그램에서 사용되는 데이터와 메모리 등의 자원 그리고 스레드로 구성된다. ▷ 쓰레드(Thread)란? 쓰레드란 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다. 프로세스가 공장이라면 쓰레드는 .. 공감수 0 댓글수 0 2021. 2. 28.
  • [자바 스터디] #9 - 예외처리 ▣ 목표 자바의 예외 처리에 대해 학습하세요. ▣ 학습할 내용 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가 아닌 것의 차이는? 커스텀한 예외 만드는 방법 ▶ 9-1 자바에서 예외 처리 방법(try, catch, throw, throws, finally) ▷ 예외처리(exception handling)란? 예외의 발생을 대비해 코드를 작성하는 것을 의미한다. 프로그램의 비정상적 종료를 막고, 정상실행 상태 유지에 목적을 둔다. ▷ Checked Exception 과 Unchecked Exception 컴파일 시 Checked Exception 이 발.. 공감수 0 댓글수 0 2021. 2. 18.
  • [자바 스터디] #7 - 패키지 ▣ 목표 자바의 패키지에 대해 학습하세요. ▣ 학습할 내용 package 키워드 import 키워드 클래스 패스 CLASSPATH 환경변수 -classpath 옵션 접근 지시자 ▶ 7-1 package 키워드 ▷ 패키지란? 클래스의 묶음이다. 패키지 안에 클래스나 인터페이스를 포함시킬 수 있다. 클래스가 물리적으로 하나의 클래스 파일이라고 할 때 패키지는 물리적으로 하나의 디렉토리가 될 수 있다. 소스파일에서 (주석과 공백을 제외한) 첫 번째 문장에서 단 한 번의 패키지 선언만을 허용한다. 모든 클래스는 반드시 하나의 패키지에 속해야 한다. 패키지는 점(.)을 구분자로 하여 계층구조로 구성할 수 있다. 패키지는 물리적으로 클래스 파일(.class)을 포함하는 하나의 디렉터리이다. 패키지와 클래스 이름을 .. 공감수 0 댓글수 0 2021. 2. 17.
  • [자바 스터디] #8 - 인터페이스 ▣ 목표 자바의 인터페이스에 대해 학습하세요. ▣ 학습할 내용 인터페이스 정의하는 방법 인터페이스 구현하는 방법 인터페이스 레퍼런스를 통해 구현체를 사용하는 방법 인터페이스 상속 인터페이스의 기본 메소드 (Default Method), 자바 8 인터페이스의 static 메소드, 자바 8 인터페이스의 private 메소드, 자바 9 ▶8-1 인터페이스 정의하는 방법 클래스를 선언하는 것과 유사하다. class라는 키워드 대신 interface라는 키워드를 사용해서 선언한다. interface Example{ } 접근지시자로는 public과 default를 사용할 수 있다. 보통 클래스의 멤버들과 달리 인터페이스의 멤버들은 제약조건이 있다. -> (인터페이스에 선언된) 모든 멤버변수는 public stati.. 공감수 0 댓글수 1 2021. 2. 16.
  • [자바 스터디] #3 - 연산자 ▣ 목표 자바가 제공하는 다양한 연산자를 학습하세요. ▣ 학습할 내용 산술 연산자 비트 연산자 관계 연산자 논리 연산자 instanceof assignment(=) operator 화살표(->) 연산자 3항 연산자 연산자 우선 순위 (optional) Java 13. switch 연산자 ▶ 3-0 용어 정리 연산자 (operator) : 연산을 수행하는 기호 (+, -, *, /, % 등) 피연산자(operand) : 연산자의 작업 대상 (변수, 상수, 리터럴, 수식 등) ▶ 3-1 산술 연산자(Arithmetic Operator) 기본 사칙 연산자(+, -, *, /)와 나머지 연산자(%)가 있다. 우선순위도 이미 알고있던 순서대로 곱셈, 나눗셈, 나머지 연산자의 우선순위가 높고, 덧셈과 뺄셈은 그 다.. 공감수 0 댓글수 0 2021. 2. 4.
  • [자바 스터디] #2 - 데이터 타입, 변수 그리고 배열 ▣ 목표자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.▣ 학습할 내용프리미티브 타입 종류와 값의 범위 그리고 기본 값프리미티브 타입과 레퍼런스 타입리터럴변수 선언 및 초기화하는 방법변수의 스코프와 라이프타임타입 변환, 캐스팅 그리고 타입 프로모션1차 및 2차 배열 선언하기타입 추론, var ▶ 2-1 프리미티브 타입 종류와 값의 범위 그리고 기본 값종류자료형크기값의 범위기본 값논리형boolean1 byte ( 8bit )true / falsefalse문자형char2 byte ( 16bit )'\u0000' ~ '\uffff'(0~65535)'\u0000' (0)정수형byte1 byte ( 8bit )-128~1270short2 byte ( 16bit )-32768~327670int.. 공감수 0 댓글수 0 2021. 1. 27.
  • [자바 스터디] #1 - JVM과 컴파일 ▣ 목표 자바 소스 파일(.java)을 JVM으로 실행하는 과정 이해하기. ▣ 학습할 내용 JVM이란 무엇인가 컴파일하는 방법 실행하는 방법 바이트코드란 무엇인가 JIT 컴파일러란 무엇이며 어떻게 동작하는지 JVM 구성 요소 JDK와 JRE의 차이 ▶ 1-1 JVM이란 무엇인가? Java Virtual Machine(JVM)은 자바 가상 머신이라고도 불리며 JVM이 있기 때문에 자바로 작성된 모든 애플리케이션을 OS 종류에 구애받지 않고 개발할 수 있다. 일반적인 애플리케이션 코드는 OS를 거쳐 하드웨어에 전달되었지만, Java는 JVM을 한 단계 더 거치기 때문에 C언어 등에 비해 상대적으로 느리다는 단점이 있었지만, 지속적으로 개선된 사항과 최근 JIT 컴파일러의 역할을 보면 향상된 최적화 기술이 적.. 공감수 0 댓글수 0 2021. 1. 26.
  • [Oracle] 콘솔창에서 테이블 정렬해서 보는 방법 콘솔에서 SELECT를 했을 때 이것이 테이블인지 뭔지 알아보기 어렵게 출력되는 경우가 많다. 방금 입력한 데이터가 잘 들어갔는지 간단히 확인만 하고 넘어갈 수도 있지만 데이터가 점점 많아질수록 가독성이 떨어지기 때문에 정렬해서 데이터를 볼 수 있는 방법이 있다. 형식은 이렇게 된다. COL 컬럼 이름 FOR A+숫자 예를 들어 현재 st_name이 처음 테이블 정의 시 데이터 바이트 크기 때문에 많은 자리를 차지하므로 줄여서 출력하면 가독성을 높일 수 있다. COL st_name FOR A10; 한글은 2byte를 차지하므로 다섯 글자의 이름까지 출력하는데 문제가 없다. 보아하니 st_tel 컬럼도 불필요하게 칸을 많이 차지하는 것을 볼 수 있다. 역시 COL st_tel FOR A13; 로 줄여준다... 공감수 0 댓글수 0 2020. 12. 27.
  • [Spring] "log4j.dtd" 지정된 파일을 찾을 수 없습니다. 에러 해결하기 Spring에서 레거시 프로젝트 생성 후 로그에 대해 알아보던 중 src/main/resources에 위치한 log4j.xml 파일을 살펴보다가 에러를 만났다. log4j.dtd파일이 해당 위치에서 찾을 수 없다는 에러가 난다. 해결방법은 노란 영역 부분을 공감수 3 댓글수 1 2020. 12. 6.
  • [데알] 프로그래머스 알고리즘 Lesson.68935 3진법 뒤집기 (Java) ■ 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/68935 코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr ■ 소스코드 ▶ for만 사용 class Solution { public int solution(int n) { int answer = 0; String temary=""; int temaryNum=1; while(n>2) { temary+=(n%3)+""; n/=3; } temary+=n+""; fo.. 공감수 0 댓글수 0 2020. 11. 18.
  • [데알] 프로그래머스 알고리즘 Lesson.42576 완주하지 못한 선수 (Java) ■ 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr ■ 소스코드 import java.util.HashMap; import java.util.Iterator; import java.util.Map; class Solution { public String solution(String[] participant, String[] completion) { String answer = ".. 공감수 0 댓글수 0 2020. 11. 17.
  • [데알] 프로그래머스 알고리즘 Lesson.68644 두 개 뽑아서 더하기 (Java) ■ 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/68644 코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr ■ 소스코드 ▶ Map import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.Map; class Solution { public int[] solution(int[] numbers) {.. 공감수 0 댓글수 0 2020. 11. 16.
  • [데알] 백준 알고리즘 No. 2577 숫자의 개수 (Python) ※ 2020-11-16 백준 사이트에서 질문 글 답변 추가 ■ 문제 링크 https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 같거나 크고, 1,000보다 작은 자연수이다. www.acmicpc.net ■ 소스 코드 A = int(input()) B = int(input()) C = int(input()) dict = { '0':0, '1':0, '2':0, '3':0, '4':0, '5':0, '6':0, '7':0, '8':0, '9':0 } for i in str(A*B*C): dict[i]+=1 for i in dict: print(dict.get(i)) ■ 풀이 딕셔너.. 공감수 0 댓글수 0 2020. 11. 15.
  • [데알] 백준 알고리즘 No. 11654 아스키코드(Python) ■ 문제 링크 https://www.acmicpc.net/problem/11654 11654번: 아스키 코드 알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오. www.acmicpc.net ■ 소스코드 print(ord(input())) 쏘 심플.... ■ 풀이 입력된 문자를 아스키코드 값으로 변환하는 ord( )를 사용했다. 역으로 아스키코드 값을 입력했을 때 그 값에 해당하는 문자로 변환하기 위해서는 chr( )를 사용할 수 있다. input( )을 사용하려면 입력은 문자열로 받기 때문에 아래와 같이 int타입으로 변환이 필요하다. print(chr(int(input()))) 아니면 아래처럼 바로 코드값을 넣어줘도 ok! prin.. 공감수 0 댓글수 0 2020. 11. 14.
  • [데알] 백준 알고리즘 No. 2750 수 정렬하기(Java) ■ 문제 링크 https://www.acmicpc.net/problem/2750 2750번: 수 정렬하기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. www.acmicpc.net ■ 소스코드 1) 배열 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { // array 사용 public static void main(String[] args) throws IOExcepti.. 공감수 0 댓글수 0 2020. 11. 13.
  • [데알] 백준 알고리즘 No. 1978 소수 찾기(Java) ■ 문제 링크 https://www.acmicpc.net/problem/1978 1978번: 소수 찾기 첫 줄에 수의 개수 N이 주어진다. N은 100이하이다. 다음으로 N개의 수가 주어지는데 수는 1,000 이하의 자연수이다. www.acmicpc.net ■ 소스코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(n.. 공감수 0 댓글수 1 2020. 11. 12.
  • [데알] 백준 알고리즘 No. 1316 그룹 단어 체커(Java) ■ 문제 링크 https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net ■ 소스코드 (Java) import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.HashMap.. 공감수 0 댓글수 0 2020. 11. 11.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.