STUDY

    [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] pull request 연습.

    [TIL] pull request 연습.

    오늘은 업무에서나 개인적으로나 많이 쓸 수 있는 pull request를 연습해 보았다. 1. 기여하려는 repo에 가서 fork해온다. fork해 오면 내 계정의 소유로 repo가 복제가 된다. 남의 원격 저장소에서 내 원격 저장소로 되는 것! repo 이름을 설정해 준뒤, 해 준다. 내 repo에 가보면 fork해온 repo를 확인할 수 있다. 2. 포크한 repo를 클론해오기(원격 -> 로컬) 작업하려는 폴더에서 git bash here을 누른 다음, git clone 를 명령어로 입력하면 원격 repo가 내 로컬로 clone이 된다. 일단은 바탕화면에다가 해보자! 3. 브랜치 생성 후 생성한 브랜치로 chekout하기 repo가 있는 폴더로 이동 후 다시 bash에서 ..

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

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

    [TIL] 깃 에러 해결(README 충돌)

    [TIL] 깃 에러 해결(README 충돌)

    일주일 후 스터디 모집을 계획하고 있는데 깃으로 기록하면 좋을 것 같았다. 첫 날 OT로 깃에 대해서 설명을 해야겠다고 생각했다. 설명을 준비하면 나에게도 공부가 되고, 스터디 진행에도 실수를 조금이라도 더 줄일 수 있기 때문이다. 공부가 필요한 부분은 pull request, 브랜치, merge, clone하는 방법 같은 것들이었다. 연습을 위해서 Github에서 repository를 생성하고, 기준이 되는 Java Project를 하나 만들고 두 개를 연결시켜주면 끝나는 아주 쉬운 일이었다. 매번 하던 일이었기도 했다. 빨리 만들고 깃허브에 다른 계정을 만들어 pull request와 clone 등을 연습해 볼 생각에 약간 설레기도 했다. 오늘 특강에서 실무에서 회사마다 다른 깃을 쓴다는 강사님의 말..

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

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