[Java] 백준 1312 번 (소수) 문제 풀이
·
BOJ, Programmers
https://www.acmicpc.net/problem/1312 1312번: 소수 피제수(분자) A와 제수(분모) B가 있다. 두 수를 나누었을 때, 소숫점 아래 N번째 자리수를 구하려고 한다. 예를 들어, A=3, B=4, N=1이라면, A÷B=0.75 이므로 출력 값은 7이 된다. www.acmicpc.net 알고리즘 분류 수학 풀이 간단한 연산 문제인줄 알아서 자꾸 뜨는 런타임오류로 인해 한참 해멨다. BigDecimal를 사용해도 10의 10,000,000제곱까지는 표현하기 어렵기 때문이다. 그래서 나눗셈을 구현해 문제를 풀었다. 나눗셈은 a와 b를 나눈 나머지에 10을 곱하는 반복적인 연산이라고 한다. 그리고 우리가 알아야 할 것은 1의자리 즉, 몫을 알아야 하므로 result라는 변수에 계속..
[Java] 백준 1543번 (문서 검색) 자바 문제 풀이
·
BOJ, Programmers
https://www.acmicpc.net/problem/1543 1543번: 문서 검색 세준이는 영어로만 이루어진 어떤 문서를 검색하는 함수를 만들려고 한다. 이 함수는 어떤 단어가 총 몇 번 등장하는지 세려고 한다. 그러나, 세준이의 함수는 중복되어 세는 것은 빼고 세야 한 www.acmicpc.net 알고리즘 분류 문자열 브루트포스 알고리즘 풀이 문자열 (String) 의 함수를 이용해 풀었다. String의 함수 중 contains() : 매개변수가 문자열 중에 포함되어 있으면 true, substring(): 문자열을 자르는 함수 indexOf(): 매개변수로 들어온 문자열이 문자열안에 몇번째에 있는지, 이 세 함수를 이용해서 풀었다. 핵심로직은 다음과 같다. while( document.con..
[Java] 백준 1448 번 (삼각형 만들기)
·
BOJ, Programmers
https://www.acmicpc.net/problem/1448 1448번: 삼각형 만들기 첫째 줄에 빨대의 개수 N이 주어진다. N은 3보다 크거나 같고, 1,000,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 빨대의 길이가 한 줄에 하나씩 주어진다. 빨대의 길이는 1,000,000보다 www.acmicpc.net 알고리즘 분류 수학 그리디 정렬 풀이 그리디 알고리즘과 정렬을 이용해 문제를 풀었다. 먼저 삼각형의 성립 조건을 알아야 한다. 삼각형의 성립 조건: a, b, c(가장 긴 변)이 있을 때 a + b > c 이어야 삼각형이 성립이 된다. 그래서 입력받은 배열을 정렬 후 뒤에서부터 차례로 삼각형이 성립이 되는지 if 조건문을 사용해 구했다. Arrays.sort(arr); fo..
[Java] 백준 2725번 (보이는 점의 개수)
·
BOJ, Programmers
https://www.acmicpc.net/problem/2725 2725번: 보이는 점의 개수 첫째 줄에 테스트 케이스의 개수 C(1
[Java] 백준 1449번 (수리공 항승)
·
BOJ, Programmers
https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 알고리즘 분류 그리디 정렬 풀이 그리디 알고리즘을 사용해 풀었다. 핵심 로직은 이러하다. 먼저 StringTokenizer로 물이 세는 곳을 저장한뒤, 새는 곳이 차례대로 있어야 최소한의 테이프를 쓰게 되니 정렬까지 진행했다. st = new StringTokenizer(br.readLine()); for (int i = 0; i < temp.length; i++) { temp[i..
[Java] 백준 1577 (도로의 개수)
·
BOJ, Programmers
https://www.acmicpc.net/problem/1577 1577번: 도로의 개수 첫째 줄에 도로의 가로 크기 N과 세로 크기 M이 주어진다. N과 M은 100보다 작거나 같은 자연수이고, 둘째 줄에는 공사중인 도로의 개수 K가 주어진다. K는 0보다 크거나 같고, 50보다 작거나 같은 자 www.acmicpc.net 알고리즘 분류 다이나믹 프로그래밍(dp) 풀이 처음에 dfs로 문제를 풀어야 되나 싶었지만 범위를 보고 dp문제임을 깨달았다. 먼저 초기화 작업이다. 가짓수를 저장하는 2차원 배열 dp이다. int형으로는 표현하기 어렵기때문에 long형으로 선언했다. 그리고 세로로 공사중인 곳을 저장하기 위한 horizontal, 가로로 공사중인 곳을 저장하귀 위한 vertical 배열을 선언해줬..
[Java] 자바에서의 배열 복사 방법( arraycopy(), copyOfRange(), copyOf() )
·
Java
자바에서 배열 복사 방법을 설명하겠습니다. ​ 1. for문을 사용한 배열 복사 방법 가장 기초적인 방법으로 for문으로 돌면서 값을 하나씩 넣어주는 방법이다. ​ 실행 결과는 당연히 1, 2, 3, 4, 5가 나온다. ​ ​ 2. System.arraycopy() 를 이용한 방법 arraycopy의 매개변수를 설명을하자면 num1 배열의 index 0 번부터 num2 배열의 index 0번부터 num1.length ( == 5) 만큼 배열의 복사한다는 뜻이다. ​ 당연히 실행결과는 1,2,3,4,5 가 나온다. ​ 3. Arrays.copyOfRange()를 이용한 방법 Arrays클래스의 copyOfRange함수를 이용한 배열 복사 방법이다. copyOfRange( 복사할 배열, 처음 인덱스, 마지막..
[Java] 백준 1926 (그림) 자바 문제 풀이
·
BOJ, Programmers
https://www.acmicpc.net/problem/1926 1926번: 그림어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로www.acmicpc.net알고리즘 분류너비우선 탐색깊이우선 탐색그래프 탐색 풀이그래프 탐색 문제이다. 저는 너비 우선 탐색(bfs)를 이용해 풀었다.먼저 초기화 작업이다.  x 축 좌표로 이동할 int형 배열 dx,y 축 좌표로 이동할 int형 배열 dy,그림이 그려져 있는지 안그려져 있는지 (0과 1인지) 을 구분하는 2차원 배열 map,방문했는지 안했는지 구분하는 boolean형 2차원 배열 visited,그리고 너비 우선 탐색..
[Java] 프로그래머스 (이중우선 순위 큐 )
·
BOJ, Programmers
https://school.programmers.co.kr/learn/courses/30/lessons/42628 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 알고리즘 분류 힙(heap) 풀이 요소를 넣을때마다 정렬하는게 아니고 넣을 때 자기 자리를 찾아 넣는PriorityQueue 를 이용해서 풀었다. 하지만 Queue특성인 FIFO때문에 제일 큰 숫자가 뒤에 있으므로 poll을 함수를 사용해 삭제할 순 없었다. 그래서 temp 라는 큰 숫자가 앞에오는(내림차순인) PriorityQueue를 하나 더 선언했다. ​ 로직은 간단하다. 숫자가 들어오면 두..