컴공생의 발자취

[ 99클럽 코테 스터디 25일차 TIL ] 프로그래머스 (가장 가까운 같은 글자 및 H-Index) 본문

💡 코테/99클럽

[ 99클럽 코테 스터디 25일차 TIL ] 프로그래머스 (가장 가까운 같은 글자 및 H-Index)

MNY 2024. 4. 22. 22:45
728x90
반응형
💡 오늘의 학습 키워드

- 프로그래머스
    * 가장 가까운 같은 글자 : 비기너 문제()
    * H-Index : 미들러 문제()

 

오늘의 회고

문제1  : [가장 가까운 같은 글자]

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지

문자열을 받아서 해당 글자가 얼마나 앞의 글자와 일치하는지를 배열담아서 리턴하는 문제이다.

단, 해당 글자가 나온 적이 없을 경우는 -1을 배열에 담는다.

 

처음에는 앞에 글자가 나온 적이 있는지 여부를 배열에 담는 건 줄 알았다.

하지만, 나온 적이 있다면 얼마나 앞에 나온적이 있는지를 배열에 담아 리턴하는 문제였다.

 

이중 포문을 이용했고 

나온 적이 있다면 현재 인덱스에서 나온적 있는 앞의 인덱스를 빼주었다.

그렇게 결과값을 배열에 담아주는 식으로 진행했다.

 

 

프로그래머스

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

programmers.co.kr

 

  • 어떻게 해결했는지
class Solution {
    public int[] solution(String s) {
        int len = s.length();
        int[] answer = new int[len];
        int check = -1;
        
        for (int i = 0; i < len; i++) {
            check = -1;
            for (int j = 0; j < i; j++) {
                if (s.charAt(i) == s.charAt(j))
                    check = i-j;
            }
            answer[i] = check;
        }
        
        return answer;
    }
}

 

문제2 : [H-Index]

  • 어떤 문제가 있었고, 나는 어떤 시도를 했는지

해당 문제는 내가 문제 자체도 이해하지 못한 것 같다.

내가 이해한 문제는  h번 이상 인용된 논문이 h편 이상 나머지 h편 이하인 논문의 개수가 h개 이하일 때, h의 최대값을 구하는 건 줄 알았다.

 

아래와 같은 흐름을 이용해 문제를 풀이했는데..

테스트는 통과했지만 제출했을 때 1개만 통과됐다...

  •  2중 for문 돌면서 값 업데이트 되고
  • max보다 크거나 같은 수일 때 thesis 업데이트
  • 마지막에 h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값??

 

 

프로그래머스

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

programmers.co.kr

 

  • 어떻게 해결했는지(통과하지 못했음)
// input : 논문별 인용 횟수(int[] citations)
// return : h번 이상 인용된 논문이 h편 이상일 때 h 리턴

class Solution {
    public int solution(int[] citations) {
        int answer = 0;
        int thesisNum = citations.length; // 총 논문 개수
        int max = 0; // 큰 값 업데이트(= h)
        int thesis = 0; // h번 이상 인용 논문
        int remain = 0; // 나머지 논문
        
        // 2중 for문 돌면서 값 업데이트 되고 
        // max보다 크거나 같은 수일 때 thesis 업데이트
        // 마지막에 h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값
        for (int citation : citations) {
            thesis = 0;

            for (int update : citations) {
                if (citation <= update)
                    thesis++;
            }
            remain = thesisNum - thesis;
            if (citation == 0)
                continue;
            if (thesis >= citation && thesis >= remain && answer <= citation) {
                answer = thesis;   
            }
        }
        
        return answer;
    }
}

 

  • 무엇을 새롭게 알았는지

오늘 문제가 조금 어려웠다고 한다.

그래도 미들러를 푸는 것으로 목표를 잡았는데 풀지 못해 매~~~우 안타까웠다..

비기너는 금방 풀이했지만, 시간 없다고 급하게 문제를 보는 것은 좋지 않은 행동이라고 생각한다.

아무튼 H-Index 미들러 문제는 문제 자체를 잘못 이해한 건지.. 왜 안되는 건지 잘 모르겠다.

일단, 오늘은 너무 피곤하니 여기까지...

 

내일 학습할 것은 무엇인지 (최대 3개)

  • 정보처리기사 실기 공부
  • 클럽99 코딩테스트(비기너) 문제풀이
  • 내배캠 자바 수강
728x90
반응형