글
프로그래머스 C# 겹치는 선분의 길이(배열 선언, JAVA)
using System;
public class Solution {
public int solution(int[,] lines) {
int answer = 0;
int max = 0;
int min = 0;
int[] lineArr = new int[200];
//-100~100까지 있어서 200개의 배열을 만들어 놓는다.
for(int i = 0; i < lines.GetLength(0); i++)
{
max = Math.Max(lines[i,0], lines[i,1]); // 1 5 9
// 둘 중에 최댓값 리턴
min = Math.Min(lines[i,0], lines[i,1]); // 0 2 3
// 둘 중에 최솟값 리턴
for(int j = min; j < max; j++)
{
lineArr[j + 100]++;
}
}
for(int i = 0; i < lineArr.Length; i++)
{
if(lineArr[i] > 1) // 두 번 이상 플러스가 된 lineArr을 불러온다.
{
answer++;
}
}
return answer;
}
}
자바
import java.util.HashMap;
import java.util.Map;
class Solution {
public int solution(int[][] lines) {
Map<Integer, Integer> map = new HashMap<>();
for (int i=0; i<lines.length; i++)
{
int min = Math.min(lines[i][0], lines[i][1]);
int max = Math.max(lines[i][0], lines[i][1]);
for (int j=min; j<max; j++)
{
map.put(j, map.getOrDefault(j, 0) + 1);
}
}
int answer = 0;
for (Map.Entry<Integer, Integer> entry : map.entrySet())
{
if (entry.getValue() >= 2)
{
answer++;
}
}
return answer;
}
}
class Solution {
public int solution(int[][] lines) {
int answer = 0;
int[] cnt = new int[202];
for(int i = 0; i < lines.length; i++) {
int start = lines[i][0] + 100;
int end = lines[i][1] + 100;
if(start > end)
{
int tmp = start;
start = end;
end = tmp;
}
for(int j = start; j < end; j++) cnt[j]++;
}
for(int i = 0; i < 202; i++)
{
if(cnt[i] > 1) answer++;
}
return answer;
}
}
'프로그래밍' 카테고리의 다른 글
프로그래머스 레벨2 C# JadenCase(Split, ToString().ToUpper() / ToString().ToLower()) (0) | 2023.01.24 |
---|---|
프로그래머스 C# 특이한 정렬(OrderBy, ThenByDescending, Linq, Diagnostics, JAVA) (0) | 2023.01.24 |
프로그래머스 C# 직사각형 별찍기(Console.Write, WriteLine) (0) | 2023.01.24 |
프로그래머스 C# x만큼 간격이 있는 n개의 숫자(using System.Collections.Generic, List.Add) (0) | 2023.01.23 |
프로그래머스 C# 행렬의 덧셈(GetLength, 이중 배열 덧셈) (0) | 2023.01.23 |