
[java]프로그래머스-3진법 뒤집기
2023. 6. 9. 13:47
Developer/Java
간단하게 설명해 보겠습니다 자연수 n을 3진수로 만들고 그 수 배열을 반대로 뒤집어서 10진법으로 바꿔서 리턴하는 함수를 만드는 것입니다 먼저 n을 3진수로 만들어 봅시다 진수 변환은 주어진 수를 나눈 나머지를 차례로 뒷자리부터 입력 하면 됩니다 예를 들어 45를 3진수로 만들고 싶으면 45를 3으로 나눕니다 그럼 몫이 15입니다 나머지는 0 15를 3으로 나눕니다 그럼 몫이 5입니다 나머지는 0 5를 3으로 나눕니다 그럼 몫이 1 입니다 나머지는 2 1을 3으로 나눌수는 없네요 그럼 나머지는 1 이 맨 끝 숫자 나열하면 1200이죠? 이게 45를 3진수로 변환한 수입니다 ㅎㅎ 이걸 코드로 나타내 보면 //변환된 수를 순차적으로 저장할 변수 List li = new ArrayList(); //3진수로 변..

[java]프로그래머스-포캣몬
2023. 5. 24. 17:06
Developer/Java
포켓몬 문제입니다 문제를 간략히 정리해 봅시다 N/2 마리의 포캣몬을 가져갈 수 있는데 중복된 포켓몬 보다는 여러 종류의 포켓몬을 갖고 싶어 합니다 [ 1, 2, 3, 1 ] 이 숫자는 포켓몬의 종류를 나타내고 총 4마리가 있지만 / 2 로 나눈 갯수인 2마리만 가져갈 수 있습니다 그럼 내가 고를 수 있는 포캣몬의 수는 2이겠죠 경우의 수를 다 따져봐도 2마리만 가져갈 수 있기 때문입니다 [1, 2] [1, 3] [2, 3] 이런 방식으로 말이죠 이번 문제에서는 저는 입출력의 예를 보며 풀어냈는데 같이 보면서 생각해봅시다 저는 규칙이 있겠다라고 생각을 했습니다 처음엔 같은 숫자가 있는지 먼저 체크를 하고 그 숫자의 인덱스만 제외하고 나머지 숫자의 경우의 수를 체크해서.. 이러다 보니 머리가 터질 거 같더..

[java]프로그래머스-삼각형의 완성조건 (1)
2023. 5. 24. 10:32
Developer/Java
삼각형은 세 개의 선분이 있어야 합니다 그리고 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 한다는 것입니다 삼각형의 조건을 함수로 만들어 보고자 합니다 제가 먼저 생각한 순서는 이렇습니다 1. int 배열에서 가장 큰 값을 구하자 2. int 배열에서 큰 값의 index를 제외한 값들의 합을 구하자 3. 비교하여 리턴하자 상당히 간단한 문제입니다 먼저 int 배열에서 가장 큰 값을 구하기위해 반복문을 잠시 생각했다가 접어두고 Arrays 클래스의 sort 메서드를 사용하기로 했습니다 Arrays.sort ( 배열 ) 을 넣어주면 정렬되기 때문에 int배열[배열.length-1] 이 가장 큰 값이됩니다 이러면 1번의 가장 큰 값을 구하는것은 완료입니다 다음으로 2번째 입니다 반복문에서 가장 큰..

[java]프로그래머스-부족한 금액
2023. 5. 17. 10:05
Developer/Java
프로그래머스 코딩테스트 연습 기능이 있어 간혹 한 문제씩 풀어보는 편인데 이 코드와 리뷰를 기록하는 이유는 저도 다른 분들의 코드를 보며 다른 방식도 있구나 하며 느끼는 것이 실력 향상에 도움이 되겠다 라고 생각하기 때문입니다 ㅎㅎ "코드 라인이 짧아야 무조건 좋다 멋지다 최고다" 처음엔 이와 같이 생각했지만 지금은 아니라고 생각합니다 각설하고 문제는 아래와 같습니다 입출력 되어야하는 예시 저는 지문과 입출력 예를 여러 번 보는 편입니다 어차피 우리가 코드로 짤 내용은 이미 지문에 다 담겨있기 때문이고 제한사항은 잘 보지 않는 편이었는데 이번에 다시 한번 느낀 바가 있습니다 입출력의 내용은 이렇습니다 price 놀이기구 이용하는데에 필요한 비용 money 소지하고 있는 돈 count 탑승횟수 result..

[java]함수형 인터페이스
2023. 1. 4. 13:53
Developer/Java
오늘은 함수형 인터페이스에 대해서 알아보도록 합시다 함수형 인터페이스를 왜 알아야 하냐면 이 전 내용에 람다식을 알아봤죠 람다식은 함수형 인터페이스로만 사용이 가능하기 때문에 알고 있어야 하는 것입니다 영어론 Functional Interface 한글론 함수형 인터페이스 라고 말합니다 특징부터 살펴보자면 함수형 인터페이스라는 것은 1개의 추상 메소드만 가지고 있는 인터페이스입니다 java8 버전부터는 인터페이스에서 디폴트 메서드를 포함할 수 있지만 여러 개의 디폴트가 있더라도 추상 메서드만 딱 하나면 함수형 인터페이스 라고 합니다 딱 이것만 기억하시면 됩니다 추상 메서드가 한 갠가?! 한 개면 함수형 인터페이스 라고 인식 하시면 됩니다 함수형 인터페이스는 @FunctionalInterface 어노테이션을..
[java]람다식
2022. 12. 7. 13:56
Developer/Java
람다식 이란 함수를 함수 형태로 만들어놓지 않고 하나의 식으로 표현한 것입니다 이는 익명이라 할수있죠 자 한번 형태를 보자구요 우리가 기본적으로 알고 있는 함수 즉 메서드의 형태를 살펴봅시다 public static int[] report(String[] id_list, String[] report, int k) { } 접근지시자 public 키워드 static 반환 타입 int [] 함수명 report 매개변수 String []... 그러고 나서 { 이 영역에 우리는 코드를 짜게 되겠죠 } 람다식은 이렇지 않습니다 아주 간결해버리죠 ㅎㅎ () -> System.out.println("람다식 끝~"); 조금 더 유추하기 쉽도록 코드를 바꿔봅시다 (int x, int y) -> { return x+y; }..

[java]스레드2(Thread)
2022. 12. 6. 16:32
Developer/Java
스레드 두 번째 내용입니다 스레드는 6가지의 상태가 있습니다 NEW 생성은 되었지만 준비되지 않은 상태입니다 RUNNABLE 실행 중이거나 준비되어있는 상태입니다 WAITING 다른 스레드가 호출하기를 기다리는 상태입니다 TIMED_WATING 스레드가 sleep 메서드로 자는 상태입니다 BLOCK 스레드가 다른 작업 요청으로 인해 멈춘 상태입니다 TERMINATED 종료 이처럼 여섯가지의 상태가 있고 스레드는 JVM이 어떤 상태인지 기록하고 관리합니다 ㅎㅎ 음 그리고 스레드가 우선순위를 정할 수 있어요 setPriority 메서드를 이용해서 가능합니다 ㅎㅎ 먼저 스레드를 생성하는 클래스를 살짝만 수정해줍시다 생성자를 만들어주고 getName으로 어떤 스레드가 먼저 실행하는지 확인해보도록 합시다 pack..
[java]스레드(Thread)
2022. 11. 29. 16:48
Developer/Java
우리가 자바 공부를 할 때 자주 접했던 자바의 장점 중 하나가 c와 다르게 멀티 스레드가 가능하다 라는 내용을 한 번쯤은 접해보거나 들어봤을 겁니다 그럼 이제 자바의 장점 중 하나인 스레드를 알아보도록 합시다 ㅎㅎ 스레드를 이해하기 위해선 프로세스가 무엇인지를 이해해야 합니다 먼저 프로세스란 동작하고 있는 프로그램을 프로세스라 합니다 이 프로세스 내에서 실행되는 흐름의 단위 정도로 생각하시면 됩니다 좀 편하게 생각하고자 한다면 스레드가 모여서 프로세스를 이룬다고 생각하셔도 괜찮습니다 스레드는 구현하기 위해 Thread클래스를 이용하는데 java.lang.Thread 에서 import 해서 사용하면 됩니다 ㅎㅎ 스레드를 생성하기위해서는 2가지 방법이 있습니다 1. 상속받아서 쓰레드를 생성한다 2. Runn..
[java]I/O_2
2022. 10. 13. 09:45
Developer/Java
이 전 글에 작성한 코드에 보면 이미 있는 파일을 읽어 오는 부분이 있습니다 그 부분에서 개선 할 내용이 있어서 글을 하나 더 작성 하게됐는데 그 부분이 뭐냐하면 파일을 읽어들일 때 얼마만큼을 읽어올 수 있는지 지정 할 수 있습니다 코드 비교를 해봅시다 아주 간단하니 걱정마세요 while((readData = finput.read()) != -1){ // -1 이란 읽을 데이터가 더 없을때 까지라고 생각하면 된다 foutput.write(readData); // write 함수로 데이터를 읽어서 output에 쓴다 } byte[] buffer = new byte[512]; while((readData = finput.read(buffer)) != -1){ foutput.write(buffer, 0, re..