JAVA를 다시 공부한다는 마음으로 알고리즘 문제를 쉬운 문제부터 천천히 풀고 있다. 그러다가 마주친 백준 11718번 문제는 예상치 못한 곳에서 난관을 마주한 기분이었다. 백준 : 11718번 그대로 출력하기 이전 문제에서는 몇 번 반복할 지 횟수를 알려줘서 그대로 반복문을 써서 풀었는데, 이번에는 몇 번 입력할 건지 말하지 않아서 찾아보다 JAVA ...
백준 : 1152번 단어의 개수 코드 제출 중 계속 틀렸다는 결과를 받아, == 를 equals로 변경 후 제출했더니 통과되었다. ==와 equals의 차이는 무엇인지, 언제 사용해야하는지 정리해본다. 문자열 변수 생성 : 문자열 변수 생성은 두 가지 방법이 있다. String str = ""; 와 같이 문자열을 큰 따옴표로 둘러 싸서 선언하는 방...
자바를 처음 배울 때는 사용자에게 값을 입력받기 위해 보통 Scanner 클래스를 사용하게 된다. 하지만 알고리즘 풀이를 시작하면 Scanner로 입력받아 시간초과가 발생하는 경험을 하게 된다. 그 후 BufferedReader를 접하면서 사용하게 된다. 둘 다 사용자에게 값을 입력받을 수 있는 기능을 제공한다. 두 클래스는 무엇인지 그리고 어떤 차이점이...
Java에서 int의 메모리 크기는 4byte로 표현할 수 있는 범위는 -2,147,483,648 ~ 2,147,483,647이다. long의 메모리 크기는 8byte로 표현할 수 있는 범위는 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807이다. 이 때 이 범위를 넘어서게 되면 모두 0으로 출력이 된다. 숫...
백준 14928 : 큰 수 단순한 문제라고 생각하고, BigInteger를 통해 접근했을 때, 시간 초과가 발생하였다. 다른 방법으로 접근할 수 밖에 없었는데, 분배법칙으로 접근하였다. 분배법칙에 대한 자세한 개념은 링크 를 참조하였다. 여기서 remain = (remain * 10 + (a.charAt(i) - '0')) % 20000303; 이 부...
객체 자바는 객체 지향 프로그래밍 언어로,자바에서 객체는 Class의 Instance를 의미한다. 자바에서는 클래스의 인스턴스(객체)를 생성하여 이를 활용하는 것이 중요한 개념 중 하나이며, 이로써 객체 지향 프로그래밍의 특성을 구현하게 된다. > 클래스 (Class) 클래스는 객체를 생성하기 위한 툴이나 설계도 데이터 (속성, 필드)와 메서드 ...
이분 탐색 (Binary Search) > 정렬된 배열 또는 리스트에서 원하는 값을 찾는데 사용되는 알고리즘 중 하나로, 배열이나 리스트가 정렬되어있다는 조건이 필요하다. 알고리즘의 핵심은 중간 값을 선택하고, 찾고자 하는 값과 중간값을 비교하여 탐색 범위를 반으로 줄여가는 것이다. 기본적인 동작은 다음과 같다. 시작점과 끝점을 설정 : 정렬된 배...
브루트포스 (Brute Force) 브루트 포스를 사전적 의미로 찾아본다면 다음과 같다. Brute : 무식한 Force : 힘 즉, 발생하는 모든 경우를 무식하게 탐색한다는 뜻이다. 전체를 탐색한다는 의미에서 전체 탐색이라고도 한다. 브루트포스는 가능한 모든 경우의 수를 시도하면서 정확한 해답을 찾는 방식으로 동작한다. 이는 모든 가능성을 다 ...
Deque (덱) > Double-Ended Queue의 약어로, 양쪽 끝에서 삽입과 삭제가 모두 가능한 자료구조이다. 이는 큐(Queue)와 스택(Stack)의 특징을 모두 가지고 있다. 따라서 선입선출(FIFO)과 후입선출(LIFO) 개념이 모두 적용될 수 있다. >Java에서 덱은 java.util 인터페이스를 이용해 구현할 수 있다. 주요 메서...