STUDY/JAVA

    [TIL] 프로그래머스 - 최댓값과 최솟값 ( 느려지게 하는 범인 찾기 )

    > 문제 설명 첫 번째 시도 코드 두 번째 시도 코드 나보다 빨리 푼 사람의 코드 원인 찾기 문제 해결 후 마지막 코드 문제 설명 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. s에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다. 첫 번째 시도 코드 s를 split 메서드를 사용하여 String배열로 만든 뒤, 각 원소의 최댓값과 최솟값을 for문, Math.min(), Math.max() 메서드를 이용하여 알아내였다. 마지막에는 String answer = ""에 concat을 해서 re..

    [TIL] I/O Study - ByteArrayInputStream 예제 01

    > 1. I/O와 스트림 2. InputStream, OutputStream 3. 코드 보면서 ByteArray 입출력스트림 익히기 4. 후기 ※ 책에 나오는 예제로 공부하였다. 1. I/O와 스트림 IO란? Input과 Output의 약자로 입력과 출력, 간단히 줄여서 입출력이라고 한다. 입출력은 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것이다. 키보드로부터 데이터를 입력받는 것, 화면에 데이터를 출력하는 것이 입출력의 예라고 할 수 있다. Stream이란? 스트림은 데이터를 운반하는데 사용되는 연결통로이다. 스트림의 '물줄기'라는 뜻처럼 단방향만 가능하다! 입력에 필요한 InputStream과 출력을 위한 Output Stream이 있다. 2. ..

    [TIL] 잘못 알았던 재귀함수

    Scanner로 String 값을 입력 받아 저장하고 다시 int 값을 받아서 그 값이 1이면 String 값을 return 하고, int 값이 2이면 다시 메서드를 호출하여 String 값을 재입력 받아 저장하는 구조의 메서드를 구현해보려고 했다. 코드를 한 번 보자. 근데 이상하다. 아래 중괄호를 보면 빨간 줄이 그어져 있는 것을 볼 수 있다. 무엇이 잘못되었는지 확인하니 return 값을 넣지 않았단다. 함수 전체에 return 값을 주던지, else에 return값을 따로 주어야 한다고 한다. 여기서 사실 이상했다. check가 1일 경우 return을 하고 그게 아니면 다시 되돌아가는 재귀방식을 썼는데 왜 return값을 필요로 할까 싶으면서도 일단은 printName() 밑에 return 값을..

    [TIL] contain 메서드 공부하기

    * 목차 메서드를 공부하게 된 이유 contain 메서드에 대하여 contain 메서드를 공부하게 된 이유 개인 과제를 진행하면서 List에서 String[]이 포함되어 있는지 확인해야 하는 작업이 필요했는데, 다른 문서에서 작업을 해 보고 코드를 옮겨오려고 테스트로 코드를 짜보고 있는 와중에 public static void main( String[] args ) { String[] a = { "a", "b", "c", "d" }; ArrayList list = new ArrayList(); list.add( new String[] { "a", "b", "c", "d" } ); System.out.println( list.contains( a )); // fa..

    [TIL] 실무에서 Stream은 어떻게 쓰이고 있을까?

    프로그래머스에서 다른 사람의 코드를 보면 Stream으로 푸는 코드가 상위에 있을 때가 많다. 코드 여러 줄을 한 줄로 끝내서 깔끔해 보이는 코드이기 때문일까? 하지만 그 때마다 댓글에 Stream을 쓰면 느려져서 현업에서는 잘 쓰지 않는다고 매번 댓글이 달린다. 그 전에는 아 stream은 잘 안 쓰나보다 하고 잘 알아보지 않았는데 오늘은 다른 분이 Stream을 이용하신 코드를 보다가 진짜 실무에서 Stream은 어떻게 쓰이고 있는지 한 번 찾아보고 싶어졌다. HTML 삽입 미리보기할 수 없는 소스 을 참고하여 보니 코드가 간결해져 가독성이 좋고 느려지는 정도가 크지 않기 때문에 집합의 사이즈가 너무 큰게 아니라면 Stream도 상당히 자주 쓰인다고 한다. Stream 공부에 대한 필요성을 느꼈다....

    [TIL] 추상클래스와 인터페이스의 차이.

    자바 문법 종합반 3주차에 배웠던 것들을 이용하여 계산기의 기능을 코드로 구현하는 과제를 해보았다, 어떤 걸 이용하면 될까 하고 생각하다가 3주차에 배웠던 개념은 상속, 추상클래스, 인터페이스 등이 핵심적이라 이런 개념을 이용하여 구현하면 될 것 같았다. 과제에서는 무엇을 이용해야 할지 직관적으로 알기 쉽게 클래스 이름이 Abstract...로 지정되어 있는것을 보니 추상 클래스를 이용하면 될 것 같았다. 근데 추상 클래스와 인터페이스의 차이가 뭔지 고민에 빠졌다. 어차피 추상 클래스도 인터페이스도 추상 메서드가 아닌 다른 메서드를 쓸 수 있고, 둘 다 extends하거나 implements 할 때 메서드를 필수적으로 구현을 해줘야 한다. 내가 강의에서 배웠던 차이는 인터페이스의 멤버변수는 public ..

    [TIL] 프로그래머스 - 신규 아이디 추천

    문제가 너무 길어 다 가져오지는 않겠지만 요약하면 이렇다. 3자 이상 15자 이하의 String을 입력하였을 때, 주어진 조건에 맞추어 바꾸는 문제였다. 조건은 이렇다. 1. 모든 대문자를 대응되는 소문자로 치환합니다. 2. 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.)를 제외한 모든 문자를 제거합니다. 3. 마침표(.)가 2번 이상 연속된 부분을 하나의 마침표(.)로 치환합니다. 4. 마침표(.)가 처음이나 끝에 위치한다면 제거합니다. 5. 빈 문자열이라면, "a"를 대입합니다. 6. 길이가 16자 이상이면, 첫 15개의 문자를 제외한 나머지 문자들을 모두 제거합니다. 만약 제거 후 마침표(.)가 끝에 위치한다면 끝에 위치한 마침표(.) 문자를 제거합니다. 7. 길이가 2자 이하라면, 마..

    [TIL] 다형성 코드로 익혀보기

    오늘 다형성에 대한 강의를 듣다가 도저히 이해가 가지 않아서 내 나름대로 코드로 공부를 한 번 해보려고 했다. 직관적으로 알기 쉽게 아래 코드와 같이 부모 클래스는 Parents로 자식 클래스는 Child로 정해서 보기로 했다. public class Parents { public void love() { } } public class Child extends Parents{ public void play() { } } ※ instaceof 메서드는 해당 레퍼런스 변수가 형변환이 가능한지 여부를 물을 때 사용된다. Case 1. 부모 타입 객체를 부모 클래스 생성자로 인스턴스화한다. 인스턴스화 한 객체를 자식 클래스 타입으로 형변환한다. Parents p1 = new Parents(); // Child ..

    [TIL] 프로그래머스 - 완주하지 못한 선수

    수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때, 완주하지 못한 선수의 이름을 return 하도록 solution 함수를 작성해주세요. ※ 제한사항 ※ * 마라톤 경기에 참여한 선수의 수는 1명 이상 100,000명 이하입니다. * completion의 길이는 participant의 길이보다 1 작습니다. * 참가자의 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다. * 참가자 중에는 동명이인이 있을 수 있습니다. List 활용 처음에는 List에 참여선수를 다 넣었다가 완주선수를 다 빼면..

    [TIL] 프로그래머스 - 체육복

    프로그래머스 문제) 체육복 반에서 체육복 도난 사건이 있었는데, 여벌 체육복이 있는 학생이 도난 당한 학생들에게 체육복을 빌려주려 한다. 학생들의 번호는 체격 순으로 매겨져 있어서 바로 앞번호의 학생이나 뒷번호의 학생에게만 체육복을 빌려줄 수 있다. ex. 4번은 3번과 5번한테만 빌려줄 수 있다. 체육복을 적절히 빌려 최대한 많은 학생이 체육수업을 들어야 한다. 전체 학생수 n, 도난당한 학생의 번호가 담긴 배열 lost, 여벌 체육복을 가져온 학생들의 번호가 담긴 배열 reserve가 매개변수로 주어진다. 체육수업을 들을 수 있는 학생의 최대값은? 주의) 여벌 체육복을 가져온 학생이 체육복을 도난 당하면 한 벌만 남아있는거로 생각한다. 문제의 의미는 알겠는데 이것을 코드로 어떻게 구현할까. 잘 떠오르..