항해99/99club1기TIL

[99club/TIL] 1주차 - 월요일 TIL(Today I Learned)

delay100 2024. 3. 25. 23:38
728x90
반응형
SMALL

안녕하세요! delay100입니다. 

개발자 취준을 혼자 하는 건 너무 힘든 일 같아요 ,,,, (취준 2개월째)

따라서 여러 오픈 채팅에 들어가있어서 정보를 받아보곤 하는데,

좋은 정보가 있어서 바로 오늘부터 99club 스터디에 참가하게 되었습니다! (신청 링크 아래에 있어요!)

 

99Club 알게 된 경로

특히 요 근래 백준을 혼자서 푸는데 동기부여가 쉽지 않아서,, 다 같이 하면 좋겠다 싶어 주저 않고 신청했어요!

(심지어 무료라서 정말 좋습니다)

 

2024.03.25부터 99club의 첫 스터디가 진행되었습니다!  

Gather에 모여 모각코(모여서 각자 코딩)를 하는 방식이고, 카카오톡 오픈 채팅도 있어서 소통이 빠르게 진행되었습니다.

구글 폼으로 신청할 수 있는데, 저는 언어 - JAVA, 난이도 - 미들러(실버, 프로그래머스2)로 신청하였습니다.

월/목에 진행되는데 매일 2문제 정도 출제를 해주실 것 같아요.

혹시몰라 신청 링크도 같이 첨부합니다!

 

[선착순 마감] 현직 개발자와 코딩 테스트 대비하실 분! - 인프런 | 스터디

혼자 준비하기 어려운 코딩테스트,현직 개발자, 스터디원들과 완벽 대비하실 분들 구합니다.  🚩 코딩 테스트 스터디, 99클럽✅ 비용 : 무료 ✅ 신청 기간 : 3/19(화) ~ 4/07(일)✅ 스터디 기간 : [

www.inflearn.com


1일차에 주어진 미들러의 첫 문제는 아래와 같습니다.

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

 

프로그래머스

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

programmers.co.kr

아래는 제가 푼 풀이입니다. 코드에 대한 설명은 주석으로 달아두었습니다!

import java.io.*;
import java.util.*;

class Solution {
    public String solution(String[] survey, int[] choices) {
        String answer = "";
        HashMap<Character, Integer> map = new HashMap<Character, Integer>();
        
        // map에 성격 유형에 대한 초기값을 선언합니다.
        map.put('R', 0);
        map.put('T', 0);
        map.put('C', 0);
        map.put('F', 0);
        map.put('J', 0);
        map.put('M', 0);
        map.put('A', 0);
        map.put('N', 0);
        
        // 검사자가 선택한 만큼만 확인하면 됩니다.
        for(int i=0; i<choices.length; i++) {
            char a = survey[i].charAt(0); // String.charAt()으로 A, C, M 등을 추출합니다.
            char b = survey[i].charAt(1);
            
            // 점수가 1~3이면 첫 번째 유형에 대해 "매우 비동의"~"약간 비동의"를 처리합니다. 
            if(1<=choices[i] && choices[i]<4) {
                // 사용자가 선택한 값이 1이면 3점, 2이면 2점, 3이면 1점
                map.replace(a, map.get(a)+(choices[i]== 1 ? 3 : (choices[i]==2 ? 2 : 1)));
                                
            }
            // 점수가 4인 경우는 어떤 성격 유형도 점수를 얻지 않기 때문에 처리를 안 합니다.
            // 점수가 5~7이면 첫 번째 유형에 대해 "약간 동의"~"매우 동의"를 처리합니다.
            else if(4<choices[i] && choices[i]<=7) {
                // 사용자가 선택한 값이 5이면 1점, 6이면 2점, 7이면 3점
                map.replace(b, map.get(b)+(choices[i]-4));
            }
        }
        
        StringBuilder sb = new StringBuilder();
        
        // R, T 묶음에 대해 더 많이 채택된 값을 String에 추가  
        // 만약 R과 T가 같으면 사전순으로 더 빠른 값인 R이 출력되어야 하므로 아래와 같이 구성했습니다.
        if(map.get('R') < map.get('T')) {
            sb.append("T");
        } else {
            sb.append("R");
        }
        // C, F 묶음에 대해 더 많이 채택된 값을 String에 추가
        if(map.get('C') < map.get('F')) {
            sb.append("F");
        } else {
            sb.append("C");
        }
        // J, M 묶음에 대해 더 많이 채택된 값을 String에 추가
        if(map.get('J')<map.get('M')) {
            sb.append("M");
        } else {
            sb.append("J");
        }
        // A, N 묶음에 대해 더 많이 채택된 값을 String에 추가
        if(map.get('A')<map.get('N')) {
            sb.append("N");
        } else {
            sb.append("A");
        }
        
        answer = sb.toString();
        return answer;
    }
}

두 번째 미들러 문제는 아래와 같습니다.

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

 

프로그래머스

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

programmers.co.kr

이번에도 제가 푼 풀이입니다. 마찬가지로 설명을 주석으로 달아두었습니다.

import java.io.*;
import java.util.*;

class Solution {
    public int solution(int k, int[] tangerine) {
        int answer = 0;
        int[] list = new int[10000001]; // 문제에서 제시한 tangerine의 원소의 크기가 10,000,000보다 작거나 같으므로 배열의 크기를 최대로 선언했습니다.
        
        for(int i=0; i<tangerine.length; i++) {
            list[tangerine[i]]++; // 입력받은 값에 대해 list 배열에 +1을 처리해줍니다. 각 입력받은 값들의 수가 list[index]에 들어있는 값과 동일합니다.
        }
        
        Arrays.sort(list); // 오름차순 정렬(내림차순을 하고 싶었지만 프로그래머스 환경에서 실패했습니다ㅠㅠ)
        
        int cnt = 0; // 더한 원소 수
        int sum = 0; // 현재까지 더한 원소들의 개수의 합
        for(int i=0; i<tangerine.length; i++) {
            // System.out.println(list[10000000-i]); 
            if((sum+list[10000000-i])>=k) { // 오름차순이기 때문에 배열의 가장 끝 값부터 접근합니다.
                cnt++;
                break;
            }
            cnt++;
            sum += list[10000000-i];
        }
        
        answer = cnt;
        
        
        return answer;
    }
}

이 문제는 다른 분들은 HashMap을 많이 쓰더군용..ㅠㅠ

사실 int 배열을 만들 때 이렇게 큰 배열을 만들어서 해도 되나 싶었지만 .. 통과가 되더군요..

 


+ 비기너 문제

1번.

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

 

프로그래머스

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

programmers.co.kr

2번.

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

 

프로그래머스

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

programmers.co.kr

 

+ 챌린저 문제

1번.

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

 

프로그래머스

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

programmers.co.kr

2번.

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

 

프로그래머스

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

programmers.co.kr


club99 첫 날 미션 아래에 같이 첨부합니다!

Gather 미션: 벚꽃나무와 사진찍기

728x90
반응형
LIST