2023. 11. 1. 12:18, 알고리즘/프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/86491
#include <bits/stdc++.h>
using namespace std;
int solution(vector<vector<int>> sizes) {
int mxc=0;
int mxr=0;
for(auto t: sizes){
sort(t.begin(),t.end(),greater<int>());
mxc=max(mxc,t[0]);
mxr=max(mxr,t[1]);
}
return mxc*mxr;
}
각각의 명함들을 가장 긴 변이 우선이 되도록 정렬해서, 그때의 가장 긴 가로의 길이와, 가장 긴 세로의 길이를 구해서
해당 두 값을 구하는 형태로 구현.
다른 사람의 풀이를 보니까, 굉장히 깔끔하게 풀이한 풀이가 있어서 첨부해본다.
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(vector<vector<int>> sizes)
{
int answer=0;
int w=0, h=0;
for(int i=0; i<sizes.size(); i++)
{
w=max(w,min(sizes[i][0],sizes[i][1]));
h=max(h,max(sizes[i][0],sizes[i][1]));
}
answer=w*h;
return answer;
}
w의 경우는 명함의 가로세로 길이들 중에서 작은 값을 비교해서, 그 값과 기존의 w 값에서 더 큰값을 비교해서 큰값으로 w를 지속적으로 갱신
h의 경우는 명함의 가로세로 길이들 중에서 큰 값을 비교해서, 그 값과 기존의 h 값에서 더 큰값을 비교해서 큰 값으로 h를 지속적으로 갱신
딱 문제에서 말하는 형태처럼 구현한 방법으로 보인다. 깔끔하다.
기존 내 코드의 경우
시간 측면에서 위와 같은 결과를 주는데, 아래의 코드의 경우는,
이와 같다.
차이가 조금 나지만, 엄청 큰 차이는 아니라고 생각한다. 하지만 아래 코드가 더 깔끔한 느낌을 준다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 lv 2. 42839 소수찾기 c++ (0) | 2023.11.08 |
---|---|
프로그래머스 lv 1. 42840 c++ 모의고사 (0) | 2023.11.01 |
프로그래머스 lv 2. 42747 c++ H-index (0) | 2023.10.31 |
프로그래머스 lv 2. 42746 c++ 가장 큰 수 (0) | 2023.10.31 |
프로그래머스 lv 1. 42748 c++ K번째수 (0) | 2023.10.31 |
Comments, Trackbacks