| 백기선님의 자바 라이브 스터디 8주차 주제!! 인터페이스란? 추상클래스에 대해서 다뤘었죠. 인터페이스는 추상화를 극대화한 추상클래스라고 볼 수 있습니다. 추상클래스와의 차이점을 언급해볼게요. 추상클래스는 추상메서드 + 일반 메서드나 필드를 가진다면, 인터페이스는 Only 추상메서드, 상수만 가질 수 있습니다. 추상클래스는 "is-a : ~는 ~이다" 의 개념이고 인터페이스는 "has-a : ~는 ~를 할 수 있다." 라는 내용도 기억해두시면 좋습니다. 개인적으로 이 인터페이스는 자바의 다형성을 이용하는 방식으로 코드의 수정을 줄이고 유지보수성을 높인다고 생각합니다. (변경에는 닫혀있으며 확장에는 열려있다) 인터페이스 정의하는 방법 추상클래스랑 인터페이스랑 구분이 있어야 컴파일하는 과정에서 문제를 캐치..
분류 전체보기
programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 2021년 상반기 웹 백엔드 개발 데브 매칭에 출제된 문제입니다. 그때도 푼 기억이 있는 문제인데, 다시 풀려니까 코드를 더럽게 짰다만 기억나고 디테일한 부분은 기억이 안나서 다시 풀어봤습니다. 문제 요약 lottos는 내가 보유한 로또 번호 win_nums는 당첨 로또 번호입니다. lottos 배열의 0은 지워져서 알 수 없는 ..
이 문제에 대한 질문을 한 3번정도 봐서 미래에 또 같은 문제로 고생하실 분들이 검색을 통해서 찾으셨으면 하는 바람에 적어봅니다. Java file outside of source root 라면서 실행을 할 수 없을때의 해결법입니다. 원인 또한 다양한데 아래 사진처럼 프로젝트 폴더의 상위 폴더를 기준으로 열렸을 경우의 해결법을 다룹니다. 이 경우에는 해결 방법도 간단해요. root directory 맞춰서 프로젝트를 다시 열어주면 되는거거든요. File - Open - 프로젝트명으로 경로를 제대로 찾아서 열어주세요. 그러면 해결이 됩니다. 진행이 얼마 되지 않은 프로젝트라면 새로 다시 만들면 되지만 어느정도 진행한 프로젝트라면 날리기가 아깝죠. 너무 걱정하지 마시고 원인을 먼저 제대로 파악하신 뒤에 차근..
programmers.co.kr/learn/courses/30/lessons/67257 코딩테스트 연습 - 수식 최대화 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 programmers.co.kr 오늘의 문제입니다. 수식 문자열이 주어지면 (+,-,*)연산의 우선 순위를 능력껏 수정해서 최대값을 계산하라는 문제입니다. 문제 접근 저 같은 경우에는 일단 "100+200"이 있으면 100,+,200 씩 나누도록 분리했습니다. test = expression.replace('-',' - ').replace('+',' + ').replace('*',' * ').split()..
ps 거의 한 달만인가요 허허 토요일에 코딩테스트가 있어서 급하게 벼락치기로 준비해봅니다. 합격하면 좋고 합격을 못하더라도 예전보다만 제발 잘 봤으면 좋겠습니다. 어쨋든 오늘 풀 문제는 2021년 카카오 공채 코딩테스트 1번 문제였던 신규 아이디 추천 문제입니다. programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 programmers.co.kr 문제 접근 1단계 new_id의 모든 대문자를 대응되는 소문자로 치환합니다. 2단계 new_id에서 알파벳..
| 백기선님의 자바 라이브 스터디 7주차 주제 패키지란? 자바에서 패키지는 클래스나 인터페이스를 구분짓는 폴더(디렉토리) 개념입니다. 우리가 D드라이브 → 사진 폴더 → 음식 or 인물 등등 구분지어서 정리하듯이 묶어서 관리하는데 사용됩니다. 위의 예시를 굳이 패키지스럽게 표현하자면 D.사진.음식 이런 느낌이겠네요. package com.example; 소스에서 가장 맨 윗줄에 위치하고 있으며 딱 한 줄만 필요합니다. 패키지 이름과 소스 코드가 위치한 폴더의 이름이 동일해야합니다. 따라서 중간에 패키지 이름(폴더 이름)을 변경한 경우 소스 코드에서도 수정이 필요합니다. 패키지 이름은 java로 시작해서는 안된다고 합니다. 아마도 java나 javax라는 패키지가 자바 기본(확장) 패키지라서 그런가봅니다...
객체지향 프로그래밍(OOP)가 무엇인지 그 특징은 어떠한지 살펴볼게요. 객체지향 프로그래밍의 정의 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. - 위키 백과 위키에 따르면 객체 지향 프로그래밍은 절차지향 프로그래밍과 달리 "객체"들로 시선을 달리했다고 설명합니다. 뭐.. 거의 이름을 풀어서 설명한거랑 똑같죠. 자바 입문서들에서 공통적으로 객체지향은 실제세계를 모델링하여 소프트웨어를 개발하는 방법이라고 표현합니다. 절차지향의 대표적 언어인 C언어는 그럼 실제세계를 모델링하기 어렵나요?? 그렇습니다. C언어에는 구조체가 있지만 그 구조체(..
저는 현재 티스토리는 조금 IT 관련(일상도 올릴 예정) 포스팅을 올리는데 운영을 하고 있습니다. 반면 요리하거나~ 뭐 리뷰하거나~ 이런 일상적인 건 네이버 블로그에 정리하려고 계획 중입니다. 자 그런데 네이버 블로그는 티스토리와 달리 구글 검색에 직접 노출시키기 어렵습니다. 왜냐하면 바로 구글 서치 콘솔에 등록시 소유권 확인을 위해 HTML 파일 수정 과정을 거치라고 하기 때문이죠. 네이버 블로그는 HTML 수정이 어렵기도 하고 검색봇이 못 긁어가게 막아둡니다. 자 이런 상황에서 우리는 우회적으로 구글 검색에 우리 네이버 블로그 글을 노출시킬 수 있습니다. 간단하고 유명한 방식은 바로 키자드를 이용하는 겁니다. 키자드 이용하기 회원 가입 - 키자드 마이 페이지 - 네이버 ID 연동 - 이메일 인증 - ..
I 백기선님의 자바 라이브 스터디 6주차 주제 상속에 대해서 포스팅하겠습니다. 상속이란? 상속은 상위 클래스에서 정의한 필드와 메서드를 하위 클래스에서 물려받아 사용할 수 있도록 해주는 기능입니다. 상속을 사용하면 불필요한 중복 코드를 줄일 수 있습니다. 좋은 예시가 될지는 모르겠지만, 카페를 예시로 들어보겠습니다. 커피류들은 커피(샷..?) + 추가 아이템(우유나 캬라멜 시럽등)을 가지겠죠. 그리고 음료를 제조하는 과정(행동 = 메서드)이 필요할겁니다. 커피 종류마다 조금씩은 다르지만 통합할 수 있는 내용들이 있다면 그것들은 부모 클래스에서 상속받아서 사용하는 편이 더 좋더라~ 이 얘기입니다. class 자식클래스 extends 부모클래스{ } /* class 커피{ protected int shot;..
username과 password로 로그인을 구현해보도록 하겠습니다. Overview spring security의 PasswordEncoder를 이용하면 단방향 방식의 암호화를 통해 비밀번호를 안전하게 저장할 수 있습니다. 실제로 회원가입 기능에서 PasswordEncoder를 상속받은 BCryptPasswordEncoder를 이용해서 비밀번호를 저장하는 기능을 구현해봤습니다. 로그인 기능을 구현한다면서 왜 갑자기 회원가입을 언급하고 있는 걸까요?? 이유는 로그인 방법이 두 가지로 나뉘기 때문입니다. 암호화 과정을 두 번 거칠 것인지 아니면 비밀번호 저장 방식을 바꿀 것인지로 말이죠. 저장 방식을 바꿔보자 spring security 공식 문서에서 추천하는 방식은 DelegatingPasswordEnc..