언어제한 코테 대비를 위해 C++과 친해지는 시간을 가져보자
lv.1 가장 간단한 문제!
파이썬으로 코테 준비를 해왔는데,
후배가 c++이 파이썬 list랑 비슷한 기능을 지원해서 괜찮다길래 써보려고 함
https://school.programmers.co.kr/learn/courses/30/lessons/86491?language=cpp
가로 세로 길이가 각각 다른 명함이 있고
이 명함들을 다 담을 수 있는 최소 가로세로를 가진 명함 케이스의 너비를 구해야 한다
여기에서 각 배열 요소의 sizes[i][0]과 sizes[i][1]의 각 max값을 구하면 편할 수 있지만
sizes[i]의 각 [0],[1] 번째 요소가 sort되어 있지 않기 때문에
sort부터 해줘야 한다
그래서 처음에는 파이썬에서 풀 듯이 for문을 돌면서
각 요소에 sort()를 해주려고 했는데,
c++은 그렇게 간단하지 않았다
그래서 for문을 돌면서 각 [0],[1]번째 요소를 비교해서
큰값을 가로, 작은 값을 세로로 지정하고,
기존 전역변수의 max가로, max 세로값과 비교해서 더 큰 값을 업데이트 하도록 했다
최종 결과는 전역변수의 max가로세로 값을 곱해 너비를 구하자
#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int solution(vector<vector<int>> sizes) {
int answer = 0;
int max_width=0;
int max_height=0;
sort(sizes.begin(), sizes.end());
for (int i=0; i<sizes.size(); i++){
//각 단계에서 두 요소 중 큰 값이 가로, 작은 값이 세로가 되도록
int width = max(sizes[i][0], sizes[i][1]);
int height = min(sizes[i][0], sizes[i][1]);
//가로세로 세팅을 마친 후, 기존의 max 가로세로값과 비교해서
//더 큰 값을 저장
max_width = max(max_width, width);
max_height = max(max_height, height);
}
answer = max_width*max_height;
return answer;
}
알고리즘 보다는 문법에 익숙해지는 연습을 하자!
'개발자 강화 > 코딩 테스트' 카테고리의 다른 글
[프로그래머스] 카펫 - 완전탐색 (C++) lv2 (0) | 2024.11.06 |
---|---|
[프로그래머스] 소수 찾기 - 완전탐색 (C++) (0) | 2024.11.06 |
[프로그래머스] 타겟넘버 - BFS/DFS (0) | 2024.10.24 |
[프로그래머스] 조이스틱 - Greedy (0) | 2024.10.23 |
[프로그래머스] 구명보트-Greedy (0) | 2024.10.23 |