반응형
SMALL
각 명함을 가로로 돌리고 가로와 세로의 가장 큰 값을 곱하면 제일 작은 지갑이 완성된다.
리스트의 메서드를 좀더 사용하면 더 간결한 코드가 될듯하다.
using System;
using System.Collections.Generic;
using System.Linq;
namespace BOJ00
{
class Program
{
static void Main()
{
int[,] arr = //arr[1,3]
{
{ 60, 50 },
{ 30, 70 },
{ 60, 30 },
{ 80, 40 }
};
int[,] arr1 =
{
{ 10, 7 },
{ 12, 3 },
{ 8, 15 },
{ 14, 7 },
{5,15 }
};
int[,] arr2 =
{
{ 14, 4 },
{ 19, 6 },
{ 6, 16 },
{ 18, 7 },
{ 7,11}
};
int answer = new Solution().solution(arr); //Solution 클래스 메서드 사용(인자 int배열)
Console.WriteLine(answer); //리턴값 출력
int answer1 = new Solution().solution(arr1);
Console.WriteLine(answer1);
int answer2 = new Solution().solution(arr2);
Console.WriteLine(answer2);
}
}
public class Solution
{
public int solution(int[,] sizes)
{
int answer = 0;
//여기서 부터 코드 작성
List<int> hrizontals = new List<int>(); //가로와 세로를 나눠 담을 리스트 2개 생성
List<int> verticals = new List<int>();
for(int i =0; i < sizes.Length/2; i++) //각 리스트에 int[]의 가로 세로를 나누어 담기
{
hrizontals.Add(sizes[i, 0]);
}
for (int i = 0; i < sizes.Length/2; i++)
{
verticals.Add(sizes[i, 1]);
}
for (int i = 0; i < hrizontals.Count; i++) // 두 리스트의 인덱스 요소를 비교하여 큰값은 가로로 이동 후 기존 리스트 항목 지우기
{
if (verticals[i] > hrizontals[i])
{
hrizontals.Add(verticals[i]);
verticals.Add(hrizontals[i]);
hrizontals.Remove(hrizontals[i]);
verticals.Remove(verticals[i]);
}
}
answer = hrizontals.Max() * verticals.Max(); //가로 세로 리스트의 가장 큰값을 곱하면 제일 작은 지갑 완성
return answer;
}
}
}
결과창
반응형
LIST
'Algorithm > BOJ' 카테고리의 다른 글
[BOJ] 2979 트럭 주차 C# 풀이 (0) | 2023.01.19 |
---|---|
[BOJ] 10808 알파벳 개수 C# 풀이 (0) | 2023.01.19 |
[BOJ] 11659 구간 합 구하기 4 C# 풀이 (0) | 2023.01.18 |
[백준] 1차원 배열 전체 합 구하기 C# 사용 (1) | 2023.01.18 |
[BOJ] 10988 팰린드롬 C# 사용 (0) | 2023.01.17 |