본문 바로가기

코딩테스트

(10)
[Java][백준-2751] 수 정렬하기 2 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 요구사항 확인 -숫자는 최대 1백만개 주어지며, 중복되지 않는다. -숫자는 정수, 즉 양수, 음수, 0이 주어진다. -개수가 많기 때문에 빠른 알고리즘이 요구된다. 코드 설계 int idx = 1000000; boolean[] booleanA = new boolean[idx]; boolean[] booleanB = new boolean[idx]; 양수와 음수 등장여부를 받을 수 있는 boolean 배열을 초기화한다. 속도를 위해 boolean 형태를 선택했다. boolean zero = false;//숫자 0 등장여부 int count = Integer.parseInt(bufferedReader.readLine()); in..
[Java][백준-10989] 수 정렬하기 3 문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 요구사항 확인 -첫번째에 숫자를 입력받아 입력받을 숫자 개수를 확인한다. 개수 만큼 while 문으로 숫자를 받는다. -숫자는 자연수, 즉 0 보다 큰 수만 입력받는다. -숫자는 최대 천만개가 주어질 수 있다. 코드 설계 Set set = new HashSet(); int numberIdx = Integer.parseInt(bufferedReader.readLine());//입력받는 숫자 개수 int count = 10001;//입력받는 숫자 boolean[] booleans = new boolean[count];//특정 숫자 등장 여부 int[] array = new int[count];//특정 숫자 등장 횟수 숫자는 1..
[Java][프로그래머스-코딩테스트 level2] [1차] 뉴스 클러스터링 o 요구사항 입력으로 들어온 두 문자열의 자카드 유사도를 계산하고, 값에 65536을 곱한 후에 정수부만 리턴하기 자카드 유사도는 집합 간의 유사도를 검사하는 방법이다. 두 집합 A, B 사이의 자카드 유사도 J(A, B)는 두 집합의 교집합 크기를 두 집합의 합집합 크기로 나눈 값이다. 자카도 유사도는 집합의 중복된 원소를 허용한다. o 코드진행 주어진 문자열 2개 -> 각각 소문자 변환 -> 영어로된 문자열만 List 생성 -> 두 집합의 자카드 유사도 계산 -> 정수 부분 취하기(리턴) o 코드설계 1) 영대소문자를 구분하지 않는다 -> String 클래스의 toLowerCase() 혹은 toUpperCase() 사용 str.toLowerCase() 2-1) 주어진 문자열을 2개씩 끊어서 새로운 문..
[Java][프로그래머스-코딩테스트 level2] 멀쩡한 사각형 o 요구사항 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 주어진다. 대각선 꼭지점 2개를 잇는 방향으로 잘렸을때 1cm의 온전한 사각형 개수를 구하기 o 코드진행 1. 길이가 1씩 증가할 때 온전한 사각형은? 가로 width, 세로 height의 직각삼각형을 그릴 수 있다. 여기서 아래쪽 삼각형을 보자. 이 삼각형은 가로가 1씩 증가할 때마다 세로는 얼마나 감소할까. 정답은 height/width 길이만큼 감소하게 된다. 즉, 가로가 width를 width로 나눈 1(=width/width)씩 증가할때 세로는 height/width 만큼 길이가 줄어든다. 가로가 n만큼 이동했을때의 가로세로 1cm온전한 사각형의 개수는 세로길이에서 height/width를 n번 뺀 계산한 값에서 소수점을 버..