프로그래머스

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

programmers.co.kr

 

Language: Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Solution {
    public String solution(int n) {
        String answer = "";
        StringBuilder sb = new StringBuilder();
        while(n-->0){
            if(n%2==0){
                sb.append("수");
            } else {
                sb.append("박");
            }
        }
        answer = sb.reverse().toString();
        return answer;
    }
}
 

* sb.reverse().toString()

    - StringBuilder 내장 메서드 사용

 

 

 

🔗 소스 코드
GitHub

 

 

프로그래머스

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

programmers.co.kr

 

Language: Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
    public int solution(int n) {
        int answer = 0;
        
        for(int i=2; i<=n; i++){
            answer++;
            for(int j=2; j<=Math.sqrt(i); j++){
                if(i%j==0){
                    answer--;
                    break;
                }
            }
            
        }
        
        return answer;
    }
}
 
 
 

* for(int j=2; j<=Math.sqrt(i); j++)

    - 제곱근까지 확인

 

 

 

🔗 소스 코드
GitHub

 

 

프로그래머스

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

programmers.co.kr

 

Language: Java

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
    public String solution(String[] seoul) {
        String answer = "";
        for(int i=0; i<seoul.length; i++){
            if(seoul[i].equals("Kim")){
                answer = "김서방은 " + i + "에 있다";
                break;
            }
        }
        return answer;
    }
}
 
 

* for 반복문

 

 

😮 찾아본 풀이

1
2
3
4
5
6
7
8
9
10
11
12
import java.util.Arrays;
 
class Solution {
    public String solution(String[] seoul) {
        String answer = "";
        
        int x = Arrays.asList(seoul).indexOf("Kim");        
 
        return "김서방은 "+ x + "에 있다";
    }
}
 
 

* List + indexOf()

 

 

 

🔗 소스 코드
GitHub

 

📚 참고 자료

 

프로그래머스

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

programmers.co.kr

 

 

프로그래머스

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

programmers.co.kr

 

Language: Java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class Solution {
    public boolean solution(String s) {
        boolean answer = true;
        
        if(!(s.length()==4 || s.length()==6)){
            answer = false;
            return answer;
        }
        
        for(int i=0; i<s.length(); i++){
            if(!Character.isDigit(s.charAt(i))){
                answer = false;
                return answer;               
            }
        }
        
        return answer;
    }
}
 
 

1. if(!(s.length()==4 || s.length()==6))

    - 길이 확인

2. if(!Character.isDigit(s.charAt(i)))

    - 숫자 확인

 

 

😮 다른 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
  public boolean solution(String s) {
      if(s.length() == 4 || s.length() == 6){
          try{
              int x = Integer.parseInt(s);
              return true;
          } catch(NumberFormatException e){
              return false;
          }
      }
      else return false;
  }
}
 
 

* try-catch 활용

 

 

 

🔗 소스 코드
GitHub

 

📚 참고 자료

 

프로그래머스

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

programmers.co.kr

 

 

프로그래머스

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

programmers.co.kr

🙂 확인 사항

1. REST_INFO 테이블

2. 음식종류별로 즐겨찾기수가 가장 많은

3. 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회

4. 음식 종류를 기준으로 내림차순 정렬

 

 

📝 Language: Oracle

1
2
3
4
5
6
7
8
9
10
11
12
13
  SELECT FOOD_TYPE, 
         REST_ID, 
         REST_NAME, 
         FAVORITES
    FROM REST_INFO
   WHERE (FOOD_TYPE, FAVORITES) IN (
         SELECT FOOD_TYPE, MAX(FAVORITES) FAVORITES
           FROM REST_INFO
       GROUP BY FOOD_TYPE
)
ORDER BY FOOD_TYPE DESC
;
 
 

* 중첩 서브 쿼리

    - FOOD_TYPE과 FAVORITES를 Set로 잡아 Type 별 최대 즐겨찾기수만 Where절에 포함되도록 함

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  SELECT FOOD_TYPE, 
         REST_ID, 
         REST_NAME, 
         FAVORITES
    FROM (
        SELECT FOOD_TYPE, 
               REST_ID, 
               REST_NAME, 
               FAVORITES,
               ROW_NUMBER() OVER (PARTITION BY FOOD_TYPE ORDER BY FAVORITES DESC) AS RN
          FROM REST_INFO
    )
   WHERE RN = 1
ORDER BY FOOD_TYPE DESC
;
 
 

* 인라인 뷰

    - 윈도우 함수: ROW_NUMBER

        - FOOD_TYPE별로 FAVORITES를 내림차순하여 RN 추가

 

🚨 Window 함수는

    - 개별 행마다 계산하므로 Group by보다 비효율적일 수 있음

    - Distinct의 추가 작업이 필요하므로 비효율적일 수 있음

 

1
2
3
4
5
6
7
8
9
10
11
12
13
 SELECT FOOD_TYPE, 
         REST_ID, 
         REST_NAME, 
         FAVORITES
    FROM REST_INFO r1
   WHERE FAVORITES = (
       SELECT MAX(FAVORITES)
         FROM REST_INFO r2
        WHERE r2.FOOD_TYPE = r1.FOOD_TYPE
   )
ORDER BY FOOD_TYPE DESC
;
 
 

* 중첩 서브 쿼리

    ⭐ 중첩 서브 쿼리에서 집계함수 사용 시, GROUP BY절 필수 X

        - SELECT MAX(FAVORITES) FROM REST_INFO: 전체 테이블에서 최대값 조회

        - WHERE 조건절: 메인 테이블의 FOOD_TYPE과 동일한 서브 테이블의 FOOD_TYPE 중 FAVORITES 최대값 조회

 

 

 

🔗 소스 코드
GitHub