BufferedReader VS ScannerBufferedReader는 버퍼를 이용하여 입출력을 수행하는 함수로, Scanner함수보다 속도가 빠르다.BufferedReader는 키보드로부터 입력이 있을 때 마다, 한 문자씩 버퍼로 전송하고 버퍼의 내용이 가득 차거나
문제 입력 및 출력 풀이 결과 및 해결방법 [결과] [정리] BufferedReader VS Scanner BufferedReader는 버퍼를 이용하여 입출력을 수행하는 함수로, Scanner함수보다 속도가 빠르다. BufferedReader는 키보드로부터
문제 입력 및 출력 풀이 결과 및 해결방법 [결과] [정리] 스택(Stack) 해결방법
해결방법이중 for문을 사용해 문제를 해결하였다. 두 번째 반복문에서 j의 조건 범위를 i까지 설정하게 될 경우, 반복문이 매 회 돌때마다 1씩 증가되어 별이 위의 예제와 같이 찍히게 된다.
해결방법이전에 해결했던, 별 찍기 문제를 토대로 문제를 해결했다.이전 문제와 다른 점은 별의 위치인데 별 찍기(1)에서는 왼쪽부터 별이 출력되었다면, 이번 문제는 오른쪽부터 별이 출력되었다.따라서 공백의 출력 또한 포함했기 때문에 조건문을 통해 공백을 먼저 출력한 후
해결방법이전에 해결했던, 별 찍기 문제를 토대로 문제를 해결했다.첫 번째 반복문을 N부터 시작하여 감소하는 방식으로 설정하였다.두 번째 반복문은 j가 i보다 작을 경우 반복문을 수행하도록 설정하였다. 이렇게 될 경우, 첫 번째 반복문을 통해 i의 개수는 N개부터 계속해
해결방법이전에 해결했던, 별 찍기 문제를 토대로 문제를 해결했다.조건문의 조건을 j가 i보다 작을 경우 공백을 출력하고, 그 외의 경우 별을 출력하도록 설정하였다.
해결방법문제 이름이 스택 수열인 만큼 스택을 사용하여 문제를 해결하는 것이 포인트이다.사용자로부터 N개의 숫자를 입력받고, 각 숫자는 1~N까지의 숫자로 구성되어 있으며 숫자 간 중복될 수 없다.이중 반복문을 통해 문제를 해결하였고, 첫 번째 반복문은 0부터 N까지의
해결방법이번 문제는 가운데 별을 기준으로 양쪽의 별의 개수가 같게 출력되어야 한다.하지만 자세히 살펴보면 이전에 풀었던 별 찍기 문제를 응용하는 문제이다.첫 반복문은 총 5행으로 이루어져 있기 때문에 N개의 반복 횟수만큼 조건을 설정하였다.두 번째 반복문은 j가 N-1
해결방법별 찍기(5) 문제에서 첫 번째 반복문의 조건을 수정하였다. 역삼각형을 출력하기 위해, N - 1부터 i가 0보다 크거나 같을 경우 감소를 조건으로 설정하여 출력하였다.
해결방법별 찍기(5) 문제와 별 찍기(6) 문제를 합쳐서 다이아몬드를 출력하였고, 모든 별을 출력할 때 두 번 겹치기 때문에 반복문의 조건을 1 빼서 한 번만 출력이 되도록 설정하였다.이 전의 문제는 String에 바로 더하였지만 메모리 초과가 떠서 StringBuil
해결방법카이사르 암호 문제는 아스키코드값을 조정하여 문제를 해결하는 방법으로 A, B, C의 아스키코드 값 처리가 중요하다.문제를 해결하기 위해 아스키코드 표를 참고하여 charArray의 i번째 원소가 A, B, C일 경우 X, Y, Z에 3을 더한 값을 배열에 넣어
해결방법이번 문제는 입력한 숫자 중 최댓값을 찾는 문제로, max 변수의 초깃값을 0으로 설정한 후 입력받은 숫자 하나씩 비교하여 max보다 크면 max의 값에 해당 숫자를 저장하였다.마찬가지로 count 값 또한 max의 값이 변경될 때 마다 인덱스에 1을 더한 값을
StringTokenizerStringTokenizer 클래스는 문자열을 지정한 구분자로 쪼개주는 클래스이다. 여기서, 쪼개어진 문자열을 토큰이라 부른다.StringTokenizer의 생성자에는 총 3가지가 존재한다.<public StringTokenizer(St
해결방법나머지 연산을 사용하여 해당 숫자가 홀수인지 짝수인지 판별하였고 홀수 중 가장 작은 숫자를 minNumber에, 홀수의 합을 oddNumberSum에 저장하였다.count는 배열에 있는 숫자가 짝수로만 구성되어있는지 판단하기 위한 변수로 짝수일 때마다 1씩 증가
해결방법numArray는 점수를 입력하기 위한 배열로 N만큼 숫자를 입력받는다.numArray의 i번째가 maxScore의 값보다 클 경우 maxScore에 numArray의 i번째 값을 저장한다.문제에서 세준이가 조작할 점수는 기존에 받았던 점수 / maxScore
해결방법가장 기초적인 최솟 값, 최댓 값 문제로 maxNumber에 정수의 최소 크기인 -1000000을 저장하고 minNumber에 정수의 최대크기인 1000000를 저장한다N만큼 반복할 때, numArray의 i번째가 maxNumber보다 클 경우 maxNumber
해결방법이전에 해결하였던 스택 구현 문제를 기반으로 큐를 구현하였다.큐는 선입선출의 방식으로 이루어진 자료구조이고, 이러한 특성 때문에 가장 먼저 입력된 데이터가 가장 먼저 나가는 특징을 갖고 있다. 따라서 큐를 구현할 때 가장 중요하게 생각한 부분이 front와 ba
해결방법처음 문제 접근을 하였을 때 List로 구현하면 쉽게 문제를 해결할 수 있겠다고 생각하여 접근하였다.하지만 리스트의 사이즈가 2 이하일 경우 인덱스를 처리하면서 문제가 발생하였고, 그런 이유 때문에 Queue를 사용해서 구현하였다.Queue를 Integer 타입
해결방법커서의 이동과 제한 시간까지 걸려있는 문제라 조금 까다로웠다.처음에는 배열을 사용하여 구현을 시도하였다. "커서의 이동을 어떻게 표현할까?"가 나의 첫 목표였고, 인덱스 변수를 생성하여 명령을 입력받을 때마다 이동시켜주었다.하지만 이와 같은 방식을 적용하니 특정
해결방법LinkedList를 이용하여 쉽게 구현할 수 있지만, 나는 배열을 사용하여 구현하였다.문제를 해결하기 위한 핵심은 인덱스의 위치 설정이었다. 왜냐하면, Deque는 원소를 앞과 뒤로 넣을 수 있기 때문이다. 즉 Stack과 Queue의 특징을 모두 가진 자료구
해결방법이전 단어뒤집기 문제의 경우, 공백을 기준으로 단어를 나누어 반복문의 조건식을 이용하여 출력하였다.하지만 이번 단어뒤집기2의 경우, 꺽새의 내부 문자열은 그대로 유지하고 꺽새의 외부 문자열을 뒤집어야했다.먼저 열린 꺽새와 닫힌 꺽새를 만났다는 것을 판별하기 위해
위 코드의 가장 큰 문제점은 이중 반복문을 사용했다는 점이다. 위 코드는 최악의 경우 모든 원소를 탐색하기 때문에 O(n^2)의 시간이 걸렸다. 또한 문제의 알고리즘 분류가 스택이였기 때문에, 스택을 사용하여 문제를 해결하려 노력했다. 스택이 비어있지 않거나, nu
해결방법쇠막대기 문제 풀기위한 핵심 포인트는 (와 )의 짝을 판단하는 것이다. 바로 문제로 들어가 해설을 진행하겠다.가장 먼저 문자열을 입력받아 pipes배열에 넣기 위해 toCharArray메소드를 사용하였다.다음으로 Character형의 stack을 선언하고 쇠막대
해결방법오큰수 문제에서 약간의 변형을 한 문제로, 기존의 문제는 오른쪽에서 자신보다 큰 수 중 왼쪽에 있는 수를 선별하는거라면 이번 문제는 동일한 값의 개수를 파악하여 개수를 비교하는 방법으로 변경되었다.따라서 문제를 풀 때 가장 핵심은 배열F로, A배열의 값을 F배열
해결방법아스키코드에 대한 이해만 있다면 쉽게 풀 수 있는 문제였다. 아스키코드의 a~z값은 97~122로 이루어져있다.따라서 입력받은 문자열을 하나의 알파벳으로 변경하기 위해 toCharArray를 사용하여 배열S에 담아주었고, 알파벳의 개수는 총 26개로 배열을 선언
해결방법처음 문제를 풀땐, 열린 괄호와 닫힌 괄호를 제외하고 +,-,\*,/의 우선순위를 정해 문제를 해결하였다. 하지만, 괄호가 들어가고 난 이후 예상 밖의 경우의 수가 너무 많이 발생했고 문제에 대해 다시한번 생각해 보았다.나는 문제를 해결하기 위해 3가지로 우선순
해결방법피연산자의 개수 N을 사용자로부터 입력받는다.피연산자는 A-Z 영대문자이며, A부터 순서대로 N개의 영대문자만 사용한다. 예를들어, N이 5일 경우 A, B, C, D, E의 대응되는 값을 사용자로부터 입력받는다.각 알파벳에 대응되는 값을 설정하기 위해서 Map
해결방법접미사 배열 문제의 핵심 키 포인트는 substring메서드의 사용이다. 해당 메서드를 사용할 경우, 특정 인덱스를 기준으로 문자열을 자를 수 있다.문제를 해결하기 위해, 특정 인덱스의 기준을 i로 설정하고 문자열의 길이만큼 반복수행하였다. 정렬 메서드를 사용하
소수(Prime Number)소수는 자신보다 작은 두 개의 자연수를 곱하여 만들 수 없는 1보다 큰 자연수이다.예를들어, 3은 3\*1 또는 1\*3으로 곱한 결과를 적는 유일한 방법이 자신을 포함하기 때문에 3은 소수이다.해결방법소수를 판별하기위한 방법 중 가장 기초
해결방법기존의 소수구하기 문제를 해결했던 방법을 응용하여 문제를 해결하려 노력했다. 결론적으로 50%에서 시간초과가 발생했다. 이를 해결하려 노력했지만 아직 해결하지 못했다.이번 문제의 핵심은 A는 가장 작은 소수여야하고, B는 N보다 작으면서 가장 큰 소수로 구성되어
해결방법1) 계승(팩토리얼, factorial)해설: 1 부터 어떤 양의 정수 n까지를 곱한 것표기법: n!예: 6! = 1 x 2 x 3 x 4 x 5 x 62) 수열(퍼뮤테이션, permutation)해설: n 의 수를 m 까지 n - 1 씩하여 곱한 것표기법: n
해결방법수빈이의 위치 S와 동생들의 수 N을 입력받는다. 동생들의 수 만큼 동생들의 위치를 입력받아 배열에 넣어준다.위 그림을 참고하면 수빈이(S)를 기준으로 각 동생들의 거리를 뺸다. 만약 뺀 거리가 음수일 경우 -1을 곱하여 양수로 만들어준다. 그 후, 나와 동생들
해결방법N이 0일 경우K=1 => (0)K=2 => (0+0)K=3 => (0+0+0)N이 1일 경우K=1 => (1)K=2 => (0+1), (1+0)k=3 => (1+0+0), (0+1+0), (0+0+1)N이 2일 경우K=1 => (2)K=2 => (1+1), (
해결방법3xN 크기의 벽을 1x2와 2x1의 타일로만 채울 때, 경우의 수를 구해야 하는 문제이다.DPN = R의 공식을 사용하여 표현해보자면, 3xN의 벽을 1x2, 2x1의 타일로만 채울 때, 채울 수 있는 경우의 수는 R개이다를 의미한다.첫 번째로 N이 홀수일 경
해결방법눈으로 수열을 보고 가장 긴 부분수열을 찾는 과정은 쉬었으나, 이를 코드로 구현하는 것은 생각보다 까다로웠다.문제에서 나타난 예제를 통해 나올 수 있는 경우의 수는 총 세가지로 오름차순으로 이루어진 순열, 내림차순으로 이루어진 순열, 특정 값을 기준으로 왼쪽부분
해결방법이번 문제는 N개의 수열로 이루어진 숫자 사이에 N-1개의 연산자를 넣어 최댓값과 최솟값을 구하는 문제이다.브루트포스와 관련된 문제이기 때문에, 숫자와 연산자를 조합하여 만들 수 있는 모든 경우의 수를 탐색하는 것이 이 문제를 해결하는 키 포인트이다.모든 경우의
실패코드해결방법처음 문제를 보았을 때, 해결하려고 했던 방법은 입력받은 두 단어의 길이를 비교하여 길이가 긴 순으로 정렬을 수행하고 맵 자료구조를 통해 알파벳의 앞에서 부터 차례대로 입력시켜주는 방법으로 진행했다.하지만, 위 방법으로 수행했을 경우 동일한 동일한 자리수
해결방법알고리즘 배너를 확인하면 해당 문제는 너비우선탐색 문제인 것을 확인할 수 있다. 데스 나이트가 이동할 수 있는 방법은 총 6가지로 문제에 표기되어 있다. 이 부분을 "어떻게 표시하면 좋을까?" 고민하다, x축만 갖는 배열과 y축만 갖는 배열을 따로 만들어 값을
해결방법데스나이트와 유사한 문제로 너비우선탐색을 통해 문제를 해결할 수 있었다. 거의 유사하나, 이번 문제는 뱀이나 사다리를 통해 이동을 할 수 있는 변수가 있다는 점이 다르다.Node타입을 갖는 큐를 선언하였다. 다음으로 큐에 출발지 노드를 생성하고 해당 인덱스를 방
해결방법이전에 연산자 끼워넣기와 데스 나이트를 풀었다면 해결할 수 있는 문제였다.makeWall()의 경우, DFS를 기반으로 코드를 구성하였다. 문제에서 벽은 총 3개까지만 세울 수 있으므로 depth가 3이될 때 BFS()를 호출한다.모든 경우의 수를 구해야하므로
우선순위 큐일반적으로 큐는 스택과 다르게 FIFO(First In First Out)의 구조를 갖는다. 우선순위큐는 먼저 들어온 순서대로 데이터가 나가는 것이 아닌 우선순위를 먼저 결정하고 그 우선순위가 높은 엘리먼트가 먼저 나가는 자료구조이다. 우선순위큐는 힙을 이용
해결방법이전에 풀었던 소수구하기 문제와 BFS 문제를 섞으면 해결할 수 있는 문제였다. 소수를 처리하는 방법은 두 가지로 생각해보았다. 첫 번째는 1000부터 9999까지 모든 소수를 배열에 저장하는 것, 두 번째는 결과로 나온 수가 소수인지 판단하는 것 나는 이 문제
해결방법이전에 괄호 문제를 풀어봤다면 쉽게 해결할 수 있는 문제였다.괄호 문제는 모든 괄호가 닫힌지 안닫힌지에 대한 여부만 판단하였다면, 이번 문제는 괄호에 대한 계산과 닫힘 여부도 판단하여야했다. 문제에서 가장 중요하게 생각했던 부분은 괄호의 쌍을 만나게 될 경우
1차시도~이해를 위한 자료01102202121033031310323203213210
해결방법코드를 보며 설명^\_^
해결방법코드를 보며 설명^\_^
해결방법이번 문제는 상, 하, 좌, 우로 붙어있는 집을 단지로 정의하고, 단지의 수와 단지 내 속한 집의 수를 출력하는 문제였다. 문제를 풀며, 가장 신경섰던 부분은 단지 내 속한 집의 수를 세는 부분이였다. 이중 반복문을 돌며 지도를 탐색하는데 해당 인덱스가 집이고,
해결방법바로 직전에 해결했던 단지번호붙이기와 유사한 문제였다. 단지번호붙이기 문제는 붙어있는 집을 단지로 규정하고, 단지의 개수와 단지 내 집의 개수를 구하는 문제였다면 이번 문제는 음식물 중 가장 큰 음식물을 출력만하면 되는 간단한 문제였다.음식물이 상, 하, 좌,
해결방법1번 접점과 연결되어 있는 모든 접점을 감염시키고, 감염된 갯수를 화면에 출력하면 풀리는 간단한 문제였다. 이전에 풀었던 문제와 다른점이라면 그래프이기 때문에 1에서 2로 연결되는 경우와 2에서 1로 연결되는 경우를 같이 처리해주어야 하는 점이다. 이번 문제는
해결방법이전에 풀었던 특정 지점에서 특정 지점을 찾아가는 문제와 유사했다. 그때 문제는 이차원 배열을 통해 해결하는 문제였다면, 이번 문제는 일차원 직선에서 해결하는 문제라고 생각하고 풀면 쉽게 풀 수 있다.이 문제에서 사용할 수 있는 경우의 수는 총 3가지이다. {N
2501 약수구하기
[JAVA/2460번] 지능형 기차2
[JAVA/10870번] 피보나치 수5
[JAVA/2309번] 일곱 난쟁이
[JAVA/2609번] 최대공약수와 최소공배수
[JAVA/2693번] N번째 큰 수
[JAVA/1292번] 쉽게 푸는 문제
[JAVA/2581번] 소수
[JAVA/2581번] 수들의 합
[JAVA/2667번] 단지번호붙이기
[JAVA/14888번] 연산자 끼워넣기
[JAVA/2504번] 괄호의 값*
[JAVA/3085번] 사탕 게임
[JAVA/1141번] 접두사
[JAVA/8911번] 거북이
[JAVA/2178번] 미로 탐색
[JAVA/16953번] A -> B