CodingTest/Programmers Lv.1
[프로그래머스 C#] Lv.1 체육복
주녘
2023. 11. 16. 18:50
https://school.programmers.co.kr/learn/courses/30/lessons/42862
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 정답코드 및 핵심 아이디어, 유의사항
- 직관적인 문제로 주석 참조
using System;
public class Solution
{
public int solution(int n, int[] lost, int[] reserve)
{
int answer = 0;
// 학생 번호에 따라 체육복을 가진 수를 나타내는 intArray
int[] intArray = new int[n];
// 가진 체육복의 개수 세팅
for(int i = 0; i < intArray.Length; i++)
intArray[i] = 1;
for(int i = 0; i < lost.Length; i++)
intArray[lost[i] - 1]--;
for(int i = 0; i < reserve.Length; i++)
intArray[reserve[i] - 1]++;
// 체육복 빌리기 ( 없는 사람이 가진 사람에게 빌림 )
for(int i = 0; i < intArray.Length; i++)
{
if(intArray[i] == 0)
{
if(i > 0 && intArray[i - 1] == 2)
{
intArray[i - 1] = 1;
intArray[i] = 1;
}
else if(i < intArray.Length - 1 && intArray[i + 1] == 2)
{
intArray[i] = 1;
intArray[i + 1] = 1;
}
}
}
// 체육복을 입을 수 있는 학생의 수 찾기
for(int i = 0; i < intArray.Length; i++)
if(intArray[i] > 0)
answer++;
return answer;
}
}