문제 설명 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번호의 학생이나 바로 뒷번호의 학생에게만 체육복을 빌려줄 수 있습니다. 예를 들어, 4번 학생은 3번 학생이나 5번 학생에게만 체육복을 빌려줄 수 있습니다. 체육복이 없으면 수업을 들을 수 없기 때문에 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 합니다. 전체 학생의 수 n, 체육복을 도난당한 학생들의 번호가 담긴 배열 lost, 여벌의 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어질 때, 체육수업을 들을 수 있는 학생의 최댓값을 return 하도록 solution 함수를..
정규식이란 텍스트 데이터 중에서 원하는 조건(Pattern)과 일치하는 문자열을 찾아 내기 위해 사용하는 것으로, 정규식을 이용하면 많은 양의 텍스트 파일 중에서 원하는 데이터를 손쉽게 뽑아낼 수도 있고, 입력된 데이터가 형식에 맞는지 체크할 수 도 있습니다. java.util.regex패키지 public static void main(String[] args) { String[] data = {"bat", "baby", "bonus", "cA", "ca", "co", "c.", "c0", "car", "combat", "count", "date", "disc"}; Pattern p = Pattern.compile("c[a-z]*"); // c로 시작하는 소문자영단어 for (int i = 0; i < ..
Code Conventions(코딩 규칙)을 왜 알아야 할 까 ? 개발하는 과정 속에서 구현하는 비용보다 유지보수의 비용이 더 크게 들어가는데 프로젝트나 소프트웨어 개발을 하면서 작성한 코드를 나만 보는 것이 아니라 참여한 모든 개발자들이 보게 됩니다. 하지만 나만의 방식으로 코드를 짰다면 다른 사람들이 봤을 때 이해하기가 힘들겠죠. 예를 들자면 나만의 독특한 글씨체로 글을 쓴 편지를 친구에게 보냈는데 그 친구가 그 편지를 읽는데에 해독이 필요한 것처럼요. 그래서 Code Conventions이 필요합니다. 정해진 Code Conventions에 맞춰 코드를 작성하게 된다면 나 외의 다른 사람들도 코드를 해석하는데 빠르게 이해할 수 있어 지게 되므로 가독성이 좋아지게 됩니다. 이 포스팅에서 설명할 컨벤션..
람다식이란 ? 람다식이란 쉽게 말해 메서드를 "하나의 식"으로 표현한 것입니다. 하나의 식으로 표현하여 훨씬 간략하게 표현이 가능하게 되며, 메서드의 이름과 반환값이 없어지므로 "익명함수"라고도 합니다. int[] arr = new int[5] Arrays.setAll(arr, (i) -> (int) (Math.random() * 5) + 1); // (i) - (int) (Math.random() * 5) + 1 람다식을 메서드로 표현 int method() { return (int) (Math.random() * 5) + 1; } 위 코드에서는 int배열 arr에 setAll의 두 번째 인자로 채우는 코드를 가지고 있습니다. (i) -> (int) (Math.random() * 5) + 1 가 람다식..
열거형은 서로 연관된 상수를 편리하게 선언하기 위한 것으로, 여러 상수를 정의할때 사용하기 좋습니다. 서로 연관된 상수라 함은 아래의 간단한 예시 코드처럼 DOOR와 WHEEL은 String 타입으로 서로 연관된 상수라 할 수 있습니다. enum Car { DOOR("4개의 문을 가진 차"), WHEEL("자동차의 바퀴"); } 열거형의 정의와 사용 아래 처럼 중괄호{}안에 상수의 이름을 나열하기만 하면 됩니다. enum 열거형이름 { 상수명1, 상수명2, .... } 이 열거형에 정의된 상수를 사용하는 방법은 "열거형이름.상수명"으로 클래스의 static 변수를 참조하는 것과 동일합니다. 또한 열거형 상수간의 비교에는 "eqauls()와 "=="를 사용할 수 있는데, ""와 같은 비교연산자는 사용할 수..
문제 설명 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 1000000이하의 자연수입니다. 입출력 예 n result 10 4 5 3 Solution.java public int solution(int n) { int answer = 0; // 0 ~ n 까지의 수를 가지는 배열 생성 int[] arr = new int[n + 1]; // 소수 중 제일 작은 수는 2이므로 2부터 시작한다. for (int i = 2; i