본문 바로가기

Problem Solving

백준 2908 상수 2908 상수 문제https://www.acmicpc.net/problem/2908 핵심적으로 스트링 클래스 메소드들을 활용해 문제의 조건들을 충족했다. 12345678910111213141516171819202122232425262728293031323334353637383940import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc= new Scanner(System.in); String first = sc.nextLine(); String second[] = first.split(" "); while(second[0].equals(second[1]) || second[0].length..
백준 1158 번 개념:(조세퍼스 문제( 요세푸스 문제(Josephus problem), 요세푸스 순열(Josephus permutation) ) :n과 k가 자연수이고, k
비트 뒤집기 어떤 정수가 주어졌을때 이 정수의 비트 하나를 0에서 1로 바꿀 수 있다. 이때 1이 연속으로 나올 수 있는 가장 긴 길이를 구하라. 1) 정수 20이 주어짐 10100 2) 길이 3 출력 3) 풀이 순서 1. STEP - ArrayList에 0과1의 길이를 오른쪽 부터 0의 길이 부터 번갈아 리스트에 저장 [ 2,1,1,1,27 ] 10100 기본적인 & 연산자와 쉬프트 연산자 이용 카운터값을 리스트에 저장 2. STEP 리스트에서 가장 긴 길이를 갱신해가며 반환 [ 2,1,1,1,27 ] 0을 기준으로 1로 바꿔야 하기 때문에 리스트의 인덱스 0,2,4번째의 짝수 순으로 판단 반복
2진수를 문자열로 0.25와 같이 0과 1사이의 실수가 double 타입으로 주어 졌을때, 그 값을 2진수 형태로 출력하는 코드를 작성하라. 길이가 32이하인 문자열로 2진수로 정확하게 표현할 수 없다면 ERROR을 출력하라. 1) 2.25를 2진수로 바꿔보자 0.25 * 2 = 0.50.5 * 2 = 1.0 2) 0과 1사이의 실수 0.25를 2진수 문자열로 출력해보자 3) 출력결과 : .01
4.6 후속자 이진 탐색 트리에서 주어진 노드의 다음 노드를 찾는 알고리즘(중위 순회)을 작성하라. 각 노드에는 부모 노드를 가리키는 링크가 존재한다고 가정하자 중위 순회 : 왼쪽, 현재, 오른쪽 순
4.5 BTS 검증 문제 - 주어진 이진 트리가 이진 탐색 트리인지 확인하는 함수를 작성하라 left.data
4.4 균형 확인 문제: 이진트리가 균형이 잡혀있는지 확인하는 함수를 작성하라. 0) 균형 잡힌 트리란? 모든 노드에 대해서 왼쪽 부분 트리의 높이와 오른쪽 부분 트리의 높이의 차이가 최대 하나인 트리를 의미한다. 1) 풀이 핵심 - 재귀사용 2) 개선 전 - O(N log N)루트부터 시작해서 높이를 구한후 균형 판단하고다시 반복적으로 루트 아래로 내려가면서 균형판단 3) 개선 후 - O(N)루트노두의 두서브 트리의 높이의 차를 한번만 구해오면서중간에 균형 판단 4) 공통점 - (최악의경우)균형판단의 횟수는 같음 5) 차이점 - 높이를 한번 구하냐 vs 높이를 계속 구하냐
루프 발견 구현