
조건 파악을 무엇보다 빠르게 하는게 중요합니다. 이게 속도면에서 많이 차이날듯합니다.
using System;
using System.Collections.Generic;
public class Solution {
public int solution(int n, int[] lost, int[] reserve)
{
int answer = 0;
List<int> Reservelist = new List<int>(reserve);
List<int> LostList = new List<int>(lost);
List<int> removelist = new List<int>();
// 여벌체육복이 있지만 도난당한 학생 리스트 작성
foreach(var val in Reservelist)
{
foreach(var val2 in LostList)
{
if(val == val2)
{
removelist.Add(val);
break;
}
}
}
foreach(var val in removelist)
{
// 여벌있던 학생은 도난 당한 사람 명단에선 삭제
LostList.Remove(val);
// 여벌이 있는 사람 리스트에서도 삭제
Reservelist.Remove(val);
}
// 없는 사람만큼 돌려야함.
for (int i = 0; i < LostList.Count; i++)
{
// 체격 차이 조건을 변수 선언
int a = LostList[i];
int b = LostList[i] + 1;
int c = LostList[i] - 1;
// 여벌 한벌을 조건으로 걸고 체격 차이 조건으로 검사
foreach(var val in Reservelist)
{
// 체격 +1 or -1 or 같은 사람 검사
if (val == a || val == b || val == c)
{
// 체격 조건 통과 시 여벌옷을 줌
// 여벌을 줬으니 삭제
Reservelist.Remove(val);
// 빌려줘서 체육이 가능한 인원 ++
answer++;
break;
}
}
}
// for문으로 체육복 다 빌려준 상태
// 체육 수업을 들을 수 있는 학생의 최댓값
// 잃어버린 사람에서 빌린 사람 수 빼고
// 최종적으로 못 빌린 사람과 전체 학생 수를 뺌
return n - (LostList.Count - answer);
}
}
하면서 느낀게 뚜렷한 숫자가 안보이면 먼가 자주 막힘 유니티에서 그래서 Log를 좋아했습니다. 이런 테스트는 머리속으로 숫자를 생각하면서 하면 좋을것 같습니다.
다른 풀이
using System;
public class Solution {
public int solution(int n, int[] lost, int[] reserve) {
int answer = 0;
for (int i = 0; i < lost.Length; i++)
{
// 인덱스 값 두번 돌림
for (int j = 0; j < reserve.Length; j++)
{
// 잃어버린 사람[i] == 여벌 있는사람 [j]
if (lost[i] == reserve[j])
{
// 여벌있지만 잃어버린 사람 수 (체육 할 수 있는 사람)
answer++;
lost[i] = 100;
reserve[j] = 200;
break;
}
}
}
for (int i = 0; i < lost.Length; i++)
{
// 다시 위와 같은 조건으로 돌려줌
for (int j = 0; j < reserve.Length; j++)
{
// 나머지 값으로 차이 값과 같은지 비교
// 잃어버린 사람 [i] - 여벌 [j] == -1 ||
// 잃어버린 사람 [i] - 여벌 [j] == 1
if (((lost[i] - reserve[j]) == -1) || ((lost[i] - reserve[j]) == 1))
{
// 오차범위 계산한 인원 수 (체육 할 수 있는 사람)
answer++;
lost[i] = 100;
reserve[j] = 200;
break;
}
}
}
answer += n - lost.Length;
return answer;
}
}
'프로그래밍 공부' 카테고리의 다른 글
공부한거 정리 (0) | 2021.07.01 |
---|---|
Day3 TCP, UDP (0) | 2021.05.28 |
유니티 세이브 DB에 저장하기(4) Rest api (0) | 2021.05.13 |
유니티 세이브 DB에 저장하기(3) Json (0) | 2021.05.06 |
유니티 세이브 DB에 저장하기(2) MySQL Workbench (0) | 2021.05.06 |