algorithm

Algorithm

콜라츠 추측 (프로그래머스, Java, Level1)

코딩테스트 문제풀이를 하면서 처음으로 오버플로우를 만났다. 대략 72억 정도가 연산과정 중 최대값이었던 것 같다. 파라메타로 받자마자 Long으로 형변환 하여 진행했다. 테스트 13은 파라메타로 1이 왔을때 0회를 리턴해야 하는 것이었고 함수 시작하자마자 예외 리턴처리를 해줌으로써 통과했다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 /* 콜라츠 추측 문제 설명 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될..

Algorithm

K번째 수 (프로그래머스, Java, Level1)

라이브러리를 사용하지 않고 풀긴 했는데 라이브러리를 사용한 풀이의 경우... int[] copy = java.util.Arrays.copyOfArray(복제대상, 시작인덱스(포함), 끝인덱스(비포함)); java.util.Arrays.sort(copy); copy[k]; Arrays 클래스를 이용해 위 세 문장을 for문 안에 집어넣어서 끝내는 걸 보니까 참.. 허탈했다. 잘 사용하는 것도 실력이니 저것들도 기억해놔야겠다. copyOfArray는 아예 처음봤다. 이하는 나의 풀이. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 ..

Algorithm

Selection Sort 구현해보기

아주 기본적인 문법들을 이용한 문제들을 지나고 나니 내가 컬렉션 프레임워크에 대해 전혀 모르고 있으며 그것이 치명적이라는 것을 깨닫게 됐다. 특히 재귀함수를 활용하지 않으면 구현하기 어려운 문제들을 만나게 됐다. 어렴풋이 재귀함수의 개념으로 실행해주는 무언가가 필요한데.. 라고 느끼기는 했지만 실제로 그것을 구현하지는 못했고, 계속 붙잡고 있기 보다는 보고 배우고 익히는게 효율적일 것 같아 강의를 봤다. 군더더기 없이 깔끔한 강의였다. 보고 이해한 뒤에 스스로 작성해봤는데 약간의 삐걱거림이 있었다. 재귀호출하는 함수의 실행 기준 if문의 조건을 배열의 length 보다 1 작게 하여 마지막에서 두번째 녀석까지만 비교를 수행하도록 해야 하는 점을 간과했다. 그리고 최소값 자체가 아니라 최소값을 가진 ind..

Algorithm

더하기 사이클 : 백준 1110번 - charAt, length()를 통한 문자열 재구성

덧셈을 통한 String의 결합 charAt() 메소드를 통한 String의 특정값 추출 length()를 통한 스트링 길이 구하기 위의 3가지를 이용해 String, int, char를 오가며 자료를 굴리는 연습이었다. 의외의 복병은 BufferedWriter 였는데... 지금까지 모든 문제는 StringBuffer 객체를 출력했기에 몰랐다. BufferedWriter의 write 메소드의 경우 여러 타입의 파라메타를 받도록 오버로딩 되어있는데, int 값을 넣을 경우 single character 를 write 한다. 따라서 String 값으로 변환해줘야 한다. 지저분하고 복잡한 풀이결과이지만.. 아직은 결과를 만들어내는 것에 집중하는 것이 더 나은 효율을 보이는 구간에 있다는 판단이다. 1 2 3 ..

Algorithm

N 찍기 : 백준 2741번 - Scanner&System.out VS BufferedReader&BufferedWriter 메모리, 소요시간 비교

시간제한을 처음 걸려본 뒤 푼 첫 문제다. 시험삼아 Scanner 와 System.out.println()을 활용해서 풀어봤는데 제한에 걸리지 않았다. 그래도 BufferedReader와는 얼마나 차이가 나는 것인지 비교를 해보고 싶어져서 BufferedReader/BufferedWirter를 활용해서 다시 풀어보고 메모리와 시간을 비교해보기로 했다. 먼저 Scanner&System.out.println() 으로 풀이한 결과다 1 2 3 4 5 6 7 8 9 10 11 12 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int ..

리차드
'algorithm' 태그의 글 목록