알고리즘
-
이번 포스트에서는 재귀가 왜 필요한지와 기본적인 재귀의 흐름에 대해서 살펴보자. 재귀함수 재귀란?재귀(再歸, recursion )란 러시아의 전통인형 마요르카 처럼 내 안에 또 다른 나 즉 모양이나 동작은 동일하지만 크기만 작은 나를 찾아가는 과정이다. 우리는 수학 시간에도 재귀의 성격을 잘 배운적이 있다. 1부터 n까지의 곱을 구하는 펙토리얼 연산이 그 예이다.n! = 1 * 2 * 3 * ... * (n-2) * (n-1) * n 여기서 맨 마지막의 *n을 제외하면 나머지는 (n-1)! 이 된다. 즉 크기만 1작아진 펙토리얼이다.이렇게 하나의 문제 내에 크기는 다르지만 동일한 성격의 다른 문제를 하나 이상 포함하고 있는 것을 재귀적 구조라고 한다. 이런 재귀를 프로그래밍 함수에 적용한 것을 재귀 함수..
[재귀]01. 재귀 함수이번 포스트에서는 재귀가 왜 필요한지와 기본적인 재귀의 흐름에 대해서 살펴보자. 재귀함수 재귀란?재귀(再歸, recursion )란 러시아의 전통인형 마요르카 처럼 내 안에 또 다른 나 즉 모양이나 동작은 동일하지만 크기만 작은 나를 찾아가는 과정이다. 우리는 수학 시간에도 재귀의 성격을 잘 배운적이 있다. 1부터 n까지의 곱을 구하는 펙토리얼 연산이 그 예이다.n! = 1 * 2 * 3 * ... * (n-2) * (n-1) * n 여기서 맨 마지막의 *n을 제외하면 나머지는 (n-1)! 이 된다. 즉 크기만 1작아진 펙토리얼이다.이렇게 하나의 문제 내에 크기는 다르지만 동일한 성격의 다른 문제를 하나 이상 포함하고 있는 것을 재귀적 구조라고 한다. 이런 재귀를 프로그래밍 함수에 적용한 것을 재귀 함수..
2024.12.03 -
이번 포스트에서는 Deque 자료구조에 대해서 살펴보자. Deque 기본 특성흔히 Deck으로 알려진 Deque는 Double ended Queue의 약자로 Queue인데 양쪽이 모두 뚤린 구조이다. 따라서 앞/뒤로 자료를 넣고 뺄 수 있는 기능을 갖는다.이에따라 기본적으로 제공되는 메서드들이 방향성을 갖는다.(물론 그렇지 않은 표현도 다 제공한다. 예를 들어 offer와 offerLast는 동일하다.) First Element(Head)Last Element(Tail)문제 발생 시예외 발생특정 값 반환예외 발생특정 값 반환insertaddFirstofferFirstaddLastofferLastremoveremoveFirstpollFirstremoveLastpollLastexaminegetFirstpee..
[자료구조]Deque이번 포스트에서는 Deque 자료구조에 대해서 살펴보자. Deque 기본 특성흔히 Deck으로 알려진 Deque는 Double ended Queue의 약자로 Queue인데 양쪽이 모두 뚤린 구조이다. 따라서 앞/뒤로 자료를 넣고 뺄 수 있는 기능을 갖는다.이에따라 기본적으로 제공되는 메서드들이 방향성을 갖는다.(물론 그렇지 않은 표현도 다 제공한다. 예를 들어 offer와 offerLast는 동일하다.) First Element(Head)Last Element(Tail)문제 발생 시예외 발생특정 값 반환예외 발생특정 값 반환insertaddFirstofferFirstaddLastofferLastremoveremoveFirstpollFirstremoveLastpollLastexaminegetFirstpee..
2024.12.02 -
입출력 관련 예제 풀어보기 BJ_B3_10952_A+B_5더보기마지막 입력 처리에 신경쓸 것https://www.acmicpc.net/problem/10952 BJ_B2_10953_A+B_6더보기,를 delimiter로 사용https://www.acmicpc.net/problem/10953 BJ_B3_11022_A+B_8더보기출력문 포멧https://www.acmicpc.net/problem/11022 BJ_B2_11721_열개씩끊어출력하기더보기출력문 포멧https://www.acmicpc.net/problem/11721
[입출력]예제 풀어보기입출력 관련 예제 풀어보기 BJ_B3_10952_A+B_5더보기마지막 입력 처리에 신경쓸 것https://www.acmicpc.net/problem/10952 BJ_B2_10953_A+B_6더보기,를 delimiter로 사용https://www.acmicpc.net/problem/10953 BJ_B3_11022_A+B_8더보기출력문 포멧https://www.acmicpc.net/problem/11022 BJ_B2_11721_열개씩끊어출력하기더보기출력문 포멧https://www.acmicpc.net/problem/11721
2024.12.01 -
백준 사이트에 입출력 속도 비교하는 내용이 있는데 유용한 자료같다.https://www.acmicpc.net/blog/view/56 입력 속도 비교여러가지 언어와 입력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 첫째 줄에 정수의 개수 N (= 10,000,000), 둘째 줄부터 N개의 줄에 한 개의 자연수(10,000 이하)가 적힌 파일www.acmicpc.net https://www.acmicpc.net/blog/view/57 출력 속도 비교여러가지 언어와 출력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 총 N개의 줄에 1부터 10,000,000까지의 자연수를 한 줄에 하나씩 출력하는 시간을 측정. 10번 측정해서 평www.acmicpc.net 이중 Ja..
[입출력]04. 입출력 방법별 소요 시간 비교백준 사이트에 입출력 속도 비교하는 내용이 있는데 유용한 자료같다.https://www.acmicpc.net/blog/view/56 입력 속도 비교여러가지 언어와 입력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 첫째 줄에 정수의 개수 N (= 10,000,000), 둘째 줄부터 N개의 줄에 한 개의 자연수(10,000 이하)가 적힌 파일www.acmicpc.net https://www.acmicpc.net/blog/view/57 출력 속도 비교여러가지 언어와 출력 방법을 이용해서 시간이 얼마나 걸리는지 비교해 보았습니다. 방법: 총 N개의 줄에 1부터 10,000,000까지의 자연수를 한 줄에 하나씩 출력하는 시간을 측정. 10번 측정해서 평www.acmicpc.net 이중 Ja..
2024.11.30 -
이번 포스트에서는 표준 출력에 대해서 살펴보자. 표준 출력 표준 출력 메서드자바에서 표준 출력으로는 PrintStream이 사용되는데 일반적으로 System.out.을 통해서 얻을 수 있다. 다음은 PrintStream에서 출력을 위해 제공되는 메서드이다. 메서드 명선언부와 설명print()public void print(Object obj)obj를 콘솔에 출력한다.println()public void println(Object x)x를 콘솔에 출력하고 줄바꿈 한다.printf()public PrintStream printf(String format, Object ... args)지시자로 구성된 format에 의거해서 args를 콘솔에 출력한다. 출력 포멧마지막에 사용된 printf()는 다양한 포멧문..
[입출력]03. 출력과 포멧이번 포스트에서는 표준 출력에 대해서 살펴보자. 표준 출력 표준 출력 메서드자바에서 표준 출력으로는 PrintStream이 사용되는데 일반적으로 System.out.을 통해서 얻을 수 있다. 다음은 PrintStream에서 출력을 위해 제공되는 메서드이다. 메서드 명선언부와 설명print()public void print(Object obj)obj를 콘솔에 출력한다.println()public void println(Object x)x를 콘솔에 출력하고 줄바꿈 한다.printf()public PrintStream printf(String format, Object ... args)지시자로 구성된 format에 의거해서 args를 콘솔에 출력한다. 출력 포멧마지막에 사용된 printf()는 다양한 포멧문..
2024.11.29 -
Scanner는 입력을 가장 편하게 처리할 수 있는 클래스이지만 BufferedReader에 비해 상대적으로 느리다. 이번 포스트에서는 BufferedReader에 대해 알아보자. * 사실 많은 APS 사이트에서 Java의 표준 입력으로 Scanner를 지정하고 있기 때문에 Scanner로 대부분 문제를 풀 수 있다. 다만 약간의 시간을 더 줄여야할 필요가 있다면 BufferedReader를 썼을 때 확실히 성능의 향상을 이룰 수 있다. BufferedReader 생성과 데이터 읽기BufferedReader 역시 Scanner와 마찬가지로 키보드, 파일, 문자열을 통해서 데이터를 읽어올 수 있다.// 키보드를 이용한 입력 처리BufferedReader br = new BufferedReader(new I..
[입출력]02. BufferedReader 활용Scanner는 입력을 가장 편하게 처리할 수 있는 클래스이지만 BufferedReader에 비해 상대적으로 느리다. 이번 포스트에서는 BufferedReader에 대해 알아보자. * 사실 많은 APS 사이트에서 Java의 표준 입력으로 Scanner를 지정하고 있기 때문에 Scanner로 대부분 문제를 풀 수 있다. 다만 약간의 시간을 더 줄여야할 필요가 있다면 BufferedReader를 썼을 때 확실히 성능의 향상을 이룰 수 있다. BufferedReader 생성과 데이터 읽기BufferedReader 역시 Scanner와 마찬가지로 키보드, 파일, 문자열을 통해서 데이터를 읽어올 수 있다.// 키보드를 이용한 입력 처리BufferedReader br = new BufferedReader(new I..
2024.11.28 -
이번 포스트에서는 자바에서 입력을 가장 손쉽게 처리할 수 있는 Scanner에 대해서 알아보자. Scanner 기본 사용법Scanner를 만들기 위한 생성자는 InputStream 타입의 파라미터 source를 받는다.public Scanner(InputStream source) {...}이 source가 어디에서 자료를 받을것인지를 결정하는데 일반적으로 키보드에서 받을 경우 System.in, 파일로 부터 받을 경우 FileInputStream이 사용된다. Scanner에서 데이터를 읽어들일 때는 일반적으로 hasNextXXX() --> nextXXX()의 두 단계를 거친다.여기서 XXX는 데이터 형에 따라 여러 가지 형태가 있다. 각각의 데이터 즉 토큰에 대한 구분은 공백문자('\t',space, ..
[입출력]01. Scanner이번 포스트에서는 자바에서 입력을 가장 손쉽게 처리할 수 있는 Scanner에 대해서 알아보자. Scanner 기본 사용법Scanner를 만들기 위한 생성자는 InputStream 타입의 파라미터 source를 받는다.public Scanner(InputStream source) {...}이 source가 어디에서 자료를 받을것인지를 결정하는데 일반적으로 키보드에서 받을 경우 System.in, 파일로 부터 받을 경우 FileInputStream이 사용된다. Scanner에서 데이터를 읽어들일 때는 일반적으로 hasNextXXX() --> nextXXX()의 두 단계를 거친다.여기서 XXX는 데이터 형에 따라 여러 가지 형태가 있다. 각각의 데이터 즉 토큰에 대한 구분은 공백문자('\t',space, ..
2024.11.27 -
1. samsung-expert-academy-extension: swexpert academy에서 입력값과 출력 값을 쉽게 복사할 수 있는 버튼 활성화https://chrome.google.com/webstore/detail/samsung-expert-academy-ex/fpjlgclniclpcfmmhgpfldppfailoeae samsung-expert-academy-extensionchrome extension for Samsung expert academychrome.google.com2. solved.ac: 백준 사이트에서 문제의 레벨을 보여줌https://chrome.google.com/webstore/detail/solvedac/anenheoccfogllpbpcmbbpcbjpogeehe so..
APS에 유용한 chrome plugin1. samsung-expert-academy-extension: swexpert academy에서 입력값과 출력 값을 쉽게 복사할 수 있는 버튼 활성화https://chrome.google.com/webstore/detail/samsung-expert-academy-ex/fpjlgclniclpcfmmhgpfldppfailoeae samsung-expert-academy-extensionchrome extension for Samsung expert academychrome.google.com2. solved.ac: 백준 사이트에서 문제의 레벨을 보여줌https://chrome.google.com/webstore/detail/solvedac/anenheoccfogllpbpcmbbpcbjpogeehe so..
2024.11.27