전체 글 68

TIL - 20230411

오늘은 자바 스터디때 할 내용을 미리 보다가 인터페이스의 다중 상속 충돌에 대해서 궁금증이 생겼었다. 스터디를 진행하는 방식이 먼저 문제를 만들어서 각자 풀어오고 자신의 풀이나 생각을 공유하는 형식이었는데, 인터페이스 다중 상속 충돌 A와 B, 두 개의 인터페이스가 있습니다. 두 인터페이스 모두 sameName이라는 이름의 메서드를 가지고 있습니다. 두 인터페이스를 모두 구현하는 (다중 상속) 클래스 C가 있다면, 두 인터페이스의 메서드를 어떻게 오버라이딩 할 수 있을까요? 라는 문제인데, A와 B, 각각의 인터페이스에서 sameName()이라는 메서드가 정의되어 있고, 그것을 C가 다중 상속을 받았을 때 어떻게 되는지 물어보는 것이다. 나는 C클래스에서 sameName()메서드를 구현하면 당연히 오버라..

TIL 2023.04.12

WIL - 20230410

이번주에는 자바 강의를 듣고 알고리즘 문제를 풀었다. 자바가 무엇인지부터 시작해서, JVM, 기본 문법, 객체지향에 대해 공부했다. 항해99 온보딩주차 때부터 자바 공부를 조금씩 했었어서 이번에는 공부했던 내용을 복습하는 느낌이었다. 정리했었던 내용은 내 블로그를 참고하면 좋을 것 같다. https://eastlight0418.tistory.com/category/Java 'Java' 카테고리의 글 목록 기술 블로그 eastlight0418.tistory.com 처음 자바에 대해 접했던 것은 고등학교때 친구가 코딩하고 있을 때 옆에서 구경했었던 것이었다. 코드를 써서 프로그램을 만들어내는 것이 재미있어 보여서 나도 프로그래밍 공부를 시작했었다. 자바를 시작하기 전에는 다들 어렵다고 해서 걱정되었었다. 막..

WIL 2023.04.10

TIL - 20230408

자바 스터디에서 스터디원 분들이 푸실 문제들을 만들다가 밤을 새버려서 하루 종일 피곤했다. 그래서 강의를 들으면 졸면서 집중 못할 것 같아서 오늘도 하루종일 알고리즘 문제를 풀었다. 오늘도 어김없이 삽질을 좀 했다. https://eastlight0418.tistory.com/39 프로그래머스 - 신규 아이디 추천 (JAVA) 카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 eastlight0418.tistory.com 코드를 다 쓰고, 코드를 실행하니 별 문제 없이 성공하길래 제출 후 체점하기를 해보니 몇개의 문제가 실패가 뜨는 것이었다. 문제가 사실 단계별로 코드를 ..

TIL 2023.04.09

프로그래머스 - 신규 아이디 추천 (JAVA)

카카오에 입사한 신입 개발자 네오는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. - 아이디의 길이는 3자 이상 15자 이하여야 합니다. - 아이디는 알파벳 소문자, 숫자, 빼기(-), 밑줄(_), 마침표(.) 문자만 사용할 수 있습니다. - 단, 마침표(.)는 처음과 끝에 사용할 수 없으며 또한 연속으로 사용할 수 없습니다. "네오"는 다음과 같이 7단계의 순차적인 처리 과정을 통해 신규 유저가 입력한 아이..

Algorithm 2023.04.09

TIL - 20230407

오전부터 프로그래머스의 알고리즘 문제들을 풀었다. 다른 문제들은 생각 쫌만 해서 다 잘 풀렸는데, 콜라츠 추측이라는 문제에서 한번 막혔다. https://eastlight0418.tistory.com/37 프로그래머스 - 콜라츠 추측 (JAVA) 문제 설명 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. eastlight0418.tistory.com 아무리 생각해도 내가 짠 코드가 맞는 것 같은데 안풀려서 답답했다. 입출력 예시의 3번째 값 626331을 실행하면 1이 될 때까지 500번을 시도해도 1이 안되어서 -1을 리턴해야 하..

TIL 2023.04.08

프로그래머스 - 콜라츠 추측 (JAVA)

문제 설명 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요. 1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, sol..

Algorithm 2023.04.08

자바(Java) - 객체지향 프로그래밍 2-3(Object - oriented Programming)

추상 클래스(abstract class) 클래스를 설계도에 비유한다면 추상 클래스는 미완성 설계도에 비유할 수 있다. 단어 뜻 그대로 완성되지 못한 채로 남겨진 설계도를 말하는데, 클래스가 미완성이라는 것은 멤버의 개수에 관계된 것이 아니라, 단지 메서드(추상 메서드)를 포함하고 있다는 의미이다. 미완성 설계도로 완성된 제품을 만들 수 없듯이, 추상 클래스로 인스턴스는 생성할 수 없다. 추상 클래스는 상속을 통해서 자손 클래스는 상속을 통해서 자손 클래스에 의해서만 완성될 수 있다. 추상 클래스 : 인스턴스 생성불가. 추상 메서드를 포함하고 있는 클래스 추상 클래스는 그 자체로는 클래스로서의 역할을 다 못하지만, 새로운 클래스를 작성하는 데에 있어서 바탕이 되는 조상 클래스로서 중요한 의미를 갖는다. 새..

Java 2023.04.05

자바(Java) - 객체지향 프로그래밍 2-2(Object - oriented Programming)

import문 Java에서 import문은 다른 패키지에 속하는 클래스나 인터페이스를 현재 소스 파일에서 사용할 수 있도록 가져오는 기능을 한다. import문은 클래스의 전체 이름(패키지 이름과 클래스 이름)을 사용하지 않고 클래스 이름만으로 해당 클래스를 사용할 수 있게 한다. Java에서는 패키지 이름과 클래스 이름이 중복되지 않는 한, 패키지 이름을 생략할 수 있다. 이 경우 클래스 이름만을 사용하여 해당 클래스를 찾게 된다. 예를 들어, java.util 패키지에 속한 Arrays 클래스를 사용하려면 다음과 같이 import문을 작성한다. import java.util.Arrays; //또는 import java.util.*; 위의 코드에서 import java.util.Arrays; 문장을 작..

Java 2023.04.04

프로그래머스 - 조회수가 가장 많은 중고거래 게시판의 첨부파일 조회하기 (MYSQL)

문제 설명 다음은 중고거래 게시판 정보를 담은 USED_GOODS_BOARD 테이블과 중고거래 게시판 첨부파일 정보를 담은 USED_GOODS_FILE 테이블입니다. USED_GOODS_BOARD 테이블은 다음과 같으며 BOARD_ID, WRITER_ID, TITLE, CONTENTS, PRICE, CREATED_DATE, STATUS, VIEWS은 게시글 ID, 작성자 ID, 게시글 제목, 게시글 내용, 가격, 작성일, 거래상태, 조회수를 의미합니다. USED_GOODS_FILE 테이블은 다음과 같으며 FILE_ID, FILE_EXT, FILE_NAME, BOARD_ID는 각각 파일 ID, 파일 확장자, 파일 이름, 게시글 ID를 의미합니다. 문제 USED_GOODS_BOARD와 USED_GOODS_F..

Algorithm 2023.03.25

프로그래머스 - 자동차 평균 대여 기간 구하기 (MYSQL)

문제 설명 다음은 어느 자동차 대여 회사의 자동차 대여 기록 정보를 담은 CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블입니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블은 아래와 같은 구조로 되어있으며, HISTORY_ID, CAR_ID, START_DATE, END_DATE 는 각각 자동차 대여 기록 ID, 자동차 ID, 대여 시작일, 대여 종료일을 나타냅니다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 평균 대여 기간이 7일 이상인 자동차들의 자동차 ID와 평균 대여 기간(컬럼명: AVERAGE_DURATION) 리스트를 출력하는 SQL문을 작성해주세요. 평균 대여 기간은 소수점 두번째 자리에서 반올림하고, 결과는 평균 대여 ..

Algorithm 2023.03.24

SQL.3

IF IF(조건문, 참일 때의 값, 거짓일 때의 값) 아래와 같이 특정 컬럼 값의 조건에 의해서, 다른 컬럼의 출력하는 분기 처리도 가능하다. 중첩 IF의 사용도 가능하다. SELECT IF(column_name is null, column_1, columnj_2) AS result IFNULL IFNULL(column_name, value) IFNULL() 함수는 해당 필드의 값이 NULL 을 반환할 때, 지정한 값으로 대체하여 출력해준다. SELECT IFNULL(column_name, '대체할 값') FROM [table_name] 이것도 중첩이 가능하다. SELECT IFNULL(column_name, IFNULl(column_name, '대체할 값')) FROM [table_name] DATE_..

SQL 2023.03.23

SQL.2

JOIN SQL에서 JOIN은 둘 이상의 테이블에서 데이터를 검색하고 결합하는 데 사용되는 기능이다. 1. INNER JOIN 두 테이블의 공통된 값만 반환한다. 즉, 두 테이블에서 동일한 값을 가지는 행들만 반환한다. 2. LEFT JOIN 왼쪽 테이블의 모든 행을 반환하고 오른쪽 테이블에서 일치하는 행을 반환한다. 오른쪽 테이블에서 일치하는 행이 없으면 NULL 값으로 반환한다. 3. RIGHT JOIN 오른쪽 테이블의 모든 행을 반환하고 왼쪽 테이블에서 일치하는 행을 반환한다. 왼쪽 테이블에서 일치하는 행이 없으면 NULL 값으로 반환된다. 4. FULL OUTER JOIN 두 테이블의 모든 행을 반환한다. 일치하지 않는 경우에는 NULL 값으로 반환된다. 5. SELF JOIN 단일 테이블에서 사..

SQL 2023.03.22

SQL.1

구조적 쿼리 언어(SQL)는 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어이다. 관계형 데이터베이스는 정보를 표 형식으로 저장하며, 행과 열은 다양한 데이터 속성과 데이터 값 간의 다양한 관계를 나타낸다. 쿼리(Query)문 query 란 단어의 뜻은 문의하다, 질문하다라는 뜻이라고 한다. 그리고 프로그래밍에서 이러한 문의는 요청, 즉 '데이터베이스에 정보를 요청하는 일'을 말한다. 그렇게 때문에 정보를 처리하는 과정에서 query를 보내면 이에 따른 정보를 DB로부터 가져온다. SELECT 쿼리문 기본 구문 SELECT 컬럼이름 FROM DB이름 Select 쿼문은 어떤 테이블에서 어떤 필드의 데이터를 가져올지로 구성된다. 테이블은 SQL이 자료를 모아놓은 항목을 말한다. 일반적으..

SQL 2023.03.20

프로그래머스 - 배열의 유사도 (JAVA)

문제 설명 두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요. 제한사항 1 ≤ s1, s2의 길이 ≤ 100 1 ≤ s1, s2의 원소의 길이 ≤ 10 s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다 s1과 s2는 각각 중복된 원소를 갖지 않습니다. 입출력 예 s1 s2 result ["a", "b", "c"] ["com", "b", "d", "p", "c"] 2 ["n", "omg"] ["m", "dot"] 0 나의 풀이 class Solution { public int solution(String[] s1, String[] s2) { int answer = 0; for(int i=0; i

Algorithm 2023.03.18

자바(Java) - 객체지향 프로그래밍 2-1(Object - oriented Programming)

상속 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 자바에서 상속을 구현하는 방법은 새로 작성하고자 하는 클래스의 이름 뒤에 상속받고자 하는 클래스의 이름을 키워드 'extends'와 함께 쓰는 것이다. 예를 들어 새로 작성하려는 클래스의 이름이 Child이고 상속받고자 하는 기존 클래스의 이름이 Praent라면 다음과 같이 하면 된다. class Parent {} class Child extends Parent { //... } 이 두 클래스는 서로 상속관계에 있다고 하며, 상속해 주는 클래스를 '조상 클래스'라 하고, 상속받는 클래스를 '자손 클래스'라 한다. 프로그램이 커질수록 클래스간의 관계가 복잡해지는데, 이때 아래와 같은 그림으로 표현하면 클래스 간의 관계를 보다 쉽게 이해할 수..

Java 2023.03.18