▶ 미션 유형

2 주차 ~ 4 주차 미션과 같은 유형의 문제 출제

 

 

▶ 프로그래밍 요구사항

    indent(인덴트, 들여쓰기) depth를 2까지만 허용한다

   함수의 길이가 15라인을 넘어가지 않도록 구현한다

   메서드의 파라미터 개수는 최대 3개까지만 구현

   함수(또는 메서드)가 한 가지 일만 하도록 최대한 작게 만들어라.

   JUnit 5와 AssertJ를 이용하여 본인이 정리한 기능 목록이 정상 동작함을 테스트 코드로 확인한다.

   JAVA Enum을 활용한다

 

 

▶ 공통피드백 

1)

요구사항을 정확히 준수한다

커밋 메시지를 의미 있게 작성한다

git을 통해 관리할 자원에 대해서도 고려한다

Pull Request를 보내기 전 브랜치를 확인한다

PR을 한 번 작성했다면 닫지 말고 추가 커밋을 한다

이름을 통해 의도를 드러낸다 

축약하지 않는다

공백도 코딩 컨벤션이다

공백 라인을 의미 있게 사용한다

space와 tab을 혼용하지 않는다

의미 없는 주석을 달지 않는다

IDE의 코드 자동 정렬 기능을 활용한다

Java에서 제공하는 API를 적극 활용한다

배열 대신 Java Collection을 사용한다

 

2)

READEME.md를 상세히 작성한다

기능 목록을 재검토한다

기능 목록을 업데이트한다

값을 하드 코딩하지 않는다

구현 순서도 코딩 컨벤션이다

변수 이름에 자료형은 사용하지 않는다

한 함수가 한 가지 기능만 담당하게 한다

함수가 한 가지 기능을 하는지 확인하는 기준을 세운다

처음부터 큰 단위의 테스트를 만들지 않는다

 

3)

함수(메서드) 라인에 대한 기준

 -15라인이 넘어간다면 함수 분리를 고민을 한다

발생할 수 있는 예외 상황에 대해 고민한다

비지니스 로직과 UI 로직을 분리한다

연관성이 있는 상수는 static final 대신 enum을 활용한다

final 키워드를 사용해 값의 변경을 막는다

객체의 상태 접근을 제한한다

객체는 객체스럽게 사용한다

필드(인스턴스 변수)의 수를 줄이기 위해 노력한다

성공하는 케이스 뿐만 아니라 예외에 대한 케이스도 테스트한다

테스트 코드도 코드다

테스트를 위한 코드는 구현 코드에서 분리되어야 한다

private 함수를 테스트 하고 싶다면 클래스(객체) 분리를 고려한다

 

 

 

https://school.programmers.co.kr/learn/courses/30/lessons/132201

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

PATIENT 테이블에서 12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호를 조회하는 SQL문을 작성해주세요. 이때 전화번호가 없는 경우, 'NONE'으로 출력시켜 주시고 결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬해주세요.

 

1)  12세 이하인 여자환자의 환자이름, 환자번호, 성별코드, 나이, 전화번호

2)  전화번호가 없는 경우, 'NONE'으로 출력시켜 주기

3)  결과는 나이를 기준으로 내림차순 정렬하고, 나이 같다면 환자이름을 기준으로 오름차순 정렬

 

SELECT PT_NAME
    ,PT_NO
    ,GEND_CD
    ,AGE
    ,IFNULL(TLNO, 'NONE')  AS  TLNO
FROM PATIENT
WHERE GEND_CD = 'W' AND AGE <= 12
ORDER BY AGE DESC, PT_NAME 

 

더 알아보기

 

MySQL에서 Column의 값이 Null인 경우를 처리해주는 함수들은 IFNULL, CASE, COALESCE 함수가 있다.

(Oracle의 NVL()과 비슷하다)

 

IFNULL - Column의 값이 NULL을 반환할 떄, 다른 값으로 출력할 수 있도록 하는 함수

 

기본구조

 

SELECT IFNULL(Column명, "Null일 경우 대체 값) FROM 테이블명;

문제: https://school.programmers.co.kr/learn/courses/30/lessons/131528

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

USER_INFO 테이블에서 나이 정보가 없는 회원이 몇 명인지 출력하는 SQL문을 작성해주세요. 

이때 컬럼명은 USERS로 지정해주세요

 

SELECT COUNT(*) AS 'USER' 

FROM USER_INFO

WHERE AGE IS NULL

 

 

문제: https://school.programmers.co.kr/learn/courses/30/lessons/12918

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

코드

class Solution {
    public boolean solution(String s) {
      if(s.length() !=4 && s.length() !=6) return false;
      for(int i=0; i<s.length(); i++){
        if(s.charAt(i) < '0' || s.charAt(i) > '9') return false;
      }
        return true;
    }
}

 

맨 처음 문제를 풀 때는 문자열 charArray로 받아서 일일이 검색을 해야될 것을 생각했다. 하지만 그 이후로 문자와 숫자 둘다 검증을 어떻게 해야 하나에 막히게 되었다.

 

문제가 요구하는 사항에 집중하고, 단순화 시키도록 해야겠다.

10번 따라 치기

문제> https://school.programmers.co.kr/learn/courses/30/lessons/131535

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

SELECT COUNT(USER_ID) AS USERS
FROM USER_INFO 
WHERE (YEAR(JOINED)='2021') AND (AGE>=20 AND AGE<=29)

 

>> USER_ID 테이블에서 회원의 수 COUNT(USER_ID)를 조회하기 위해

2021년에 가입한 회원 (YEAR(JOINED)='2021') 중에서 나이가 20세이상 29세 이하인 회원 (AGE>=20 AND AGE<=29)

조건을 추가하기 위해 WHERE조건 절을 사용

 

>>> 헷갈렸던 부분  YEAR () 함의 JOINED는 컬럼명이더라!

+ Recent posts