[프로그래머스 Level 1, C++] 실패율

2022. 7. 7. 23:34·정리 전 게시글/공부 관련

문제 : 실패율


풀이 방법

answer 값으로 실패율을 넣는게 아니라 스테이지 단계를 넣어야 해서 이걸 어떻게 해야할까 하다가

2차원 배열을 만들고 0번째에는 스테이지, 1번째에는 실패율을 넣고 내림차순 조건으로

1번째만 보고 정렬을 한다면 하고 생각이 떠올라서 했는데 되어서 다행이었다.

 

실패율을 만드는 방법은 해당 단계 / 단계를 클리어한 플레이어 수로 만들면 되는데

스테이지를 전부 클리어한 경우도 있기 때문에 이 경우를 참고하고 클리어한 플레이어를 어떻게 구하면 될까 하고 생각을하다가 count_if로 해당 단계보다 큰 숫자를 가진 요소의 갯수를 더하면 쉽게 구할 수 있었다. count_if에서 비교할 변수는 지역변수로 넣으면 이상하게 오류가 나기에 전역변수로 빼줘야했다.

 

하다보니 ignal: floating point exception (core dumped) 이런 오류가 뜨는데

해당 단계를 클리어한 플레이어가 0일 수도 있기 때문에 삼항연산자로 클리어가 0이면 그냥 0을 배열에 추가하는것도 꼭 넣어야했다. 그리고 double 배열에 넣을 때는 static_cast<double> 이런식으로 해주던지 아니면 나처럼 double 변수에 넣어서 넣어야 오류가 나지 않는다.

 

정렬 조건문에서 실패율이 같은 경우도 있기 때문에 해당 경우는 스테이지를 비교해서 오름차순으로 정렬을 해줘야 했다.

 

지금까지 진짜 어려웠던 문제였다.. ㄹㅇ로...


소스 코드

#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int i, n;
bool compare(vector<double>a, vector<double>b) {
    if(a[1] == b[1]) {
        return a[0] < b[0];
    }
    return a[1] > b[1];
}
vector<int> solution(int N, vector<int> stages) {
    n = N;
    vector<int> answer;
    vector<vector<double>> failed;
    for(i=1; i<=N; i++) {
        double count = i;
        double failed_player = count_if(stages.begin(), stages.end(), [](int e){return e==i;});
        double clear_player = count_if(stages.begin(), stages.end(), [](int e){return e>=i;});
        vector<double> temp;
        temp.push_back(count);
        temp.push_back(clear_player != 0 ? failed_player/clear_player : 0);
        failed.push_back(temp);
    }
    sort(failed.begin(), failed.end(), compare);
    for(auto & u: failed) {
        answer.push_back(u[0]);
    }
    return answer;
}

 

저작자표시 (새창열림)

'정리 전 게시글 > 공부 관련' 카테고리의 다른 글

[프로그래머스 Level 1, C++] 키패드 누르기  (0) 2022.07.08
[프로그래머스 Level 1, C++] 크레인 인형뽑기 게임  (0) 2022.07.08
[프로그래머스 Level 1, C++] [1차] 다트 게임  (0) 2022.07.06
[프로그래머스 Level 1, C++] 로또의 최고 순위와 최저 순위  (0) 2022.07.06
[프로그래머스 Level 1, C++] [1차] 비밀지도  (0) 2022.07.05
'정리 전 게시글/공부 관련' 카테고리의 다른 글
  • [프로그래머스 Level 1, C++] 키패드 누르기
  • [프로그래머스 Level 1, C++] 크레인 인형뽑기 게임
  • [프로그래머스 Level 1, C++] [1차] 다트 게임
  • [프로그래머스 Level 1, C++] 로또의 최고 순위와 최저 순위
aptenia
aptenia
공부하면서 배운 것들
  • aptenia
    새벽의 아이디어
    aptenia
  • 전체
    오늘
    어제
    • 분류 전체보기 (279)
      • 논문 (0)
      • Roboracer (2)
      • 개발 아무거나 (1)
      • 일상 아무거나 (2)
      • 정리 전 게시글 (268)
        • 개발 관련 (25)
        • 정보 관련 (19)
        • 공부 관련 (224)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 네이버 블로그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    공개SW개발자대회
    파이썬
    티스토리HTML
    반복하지않는수
    파이어베이스
    C언어
    스크롤바CSS
    c언어초보
    이것이자바다
    컨텍스트스위칭
    마인크래프트스크립트
    마인크래프트강화스크립트
    자바
    안드로이드
    일본규슈공업대학교
    콜라츠추측
    티스토리스킨편집
    이것이자바다연습문제
    캡스톤디자인
    마크
    C언어강좌
    빅데이터공모전
    C++강좌
    프로그래머스PCCE
    이것이자바다확인문제
    프로그래머스
    마크스크립트
    마인크래프트
    백준
    티스토리반응형2스킨편집
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
aptenia
[프로그래머스 Level 1, C++] 실패율
상단으로

티스토리툴바