일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Mod
- 콜라이더
- array
- 커밋메시지컨벤션
- 플로우차트
- 델리게이트
- 설계원칙
- 코딩테스트
- 구조체
- 미들웨어
- 코루틴
- 함수
- Memory safety
- 전달방식
- 연산자
- 이스케이프시퀀스
- 배열
- 기초
- Git
- 트랜잭션
- 코딩컨벤션
- C#
- 정보능력
- 객체지향프로그래밍
- params
- 귤고르기
- Unity
- 문제해결능력
- 수리능력
- NCS
- Today
- Total
목록코딩테스트 (14)
임준일의 개인 블로그

이번 문제는 want 배열의 물품을 number 배열의 값만큼 구매하고자 하는데 10일 연속으로 일치해야지 회원가입을 하는 구조이다. 그럼 여기서 조건은 1. 10씩 확인해야한다. 2. 각 물품의 개수를 구하고 number 값과 같은지 확인한다. 이번 풀이를 진행할 때 반복문이 좀 많이 쓰였다. 결국 discount 길이 만큼 확인하되, 10개 씩 확인하니 9 값을 뺀 만큼 반복하였고, 물품 만큼 반복하면서 그 개수가 맞지 않다면 break 문으로 빠져나오게 했다.

이번 문제는 최소 필요 피로도를 체크하고, 소모 피로도를 빼고 다음 던전에 보낼 때 최대 돌릴 수 있는 던전 수를 리턴하는 문제이다. 완전탐색 문제이고, bool 배열을 만들어 방문했는지 체크하며 돌리면 나올거라 생각하며 문제를 풀어보았다. 이번 dungeons는 2차원 배열이기 때문에 행의 길이만큼 반복하게 하기 위해 GetLength(0)를 사용하였다. 이번 Dfs 함수는 재귀에서 나오면 bool 배열 값을 false로 만들어 초기화하고, 다른 던전을 돌리게 끔 되어 있다.

오늘의 문제는 n 번째의 피보나치 수를 1234567로 나눈 나머지 값을 리턴하는 문제이다. 이미 규칙이 문제에 설명되어 있어서 그렇게 어렵진 않았다.

이번 문제는 시작 단어와 목표 단어가 있고, 알파벳 하나만 변경하면서 words 배열에 있는 단어를 확인해가며 변환한 최소 단계를 return 한다. 처음에 봤을 때는 무슨 소리인지 몰랐지만 다시 살펴보니 목표 단어와 글자 수 차이가 1개 뿐이라면 카운트하지 않으면 된다. 또 다시 재귀 함수를 사용하여 확인하는 문제였다. Dfs 함수의 매개변수가 전보다 좀 많아졌지만 2번째로 해보는 것이지만 시간이 좀 걸려서 해결했다.

이번 문제는 남은 작업 진도를 확인하고 작업 속도에 따라 언제 끝나는지 확인한다. 그 후, 앞 순서대로 배포하게 되는데 만약 7, 3, 9 순으로 작업하게 된다면 7이 배포될 때 3은 7보다 작기 때문에 같이 배포되고, 9는 7보다 크기 때문에 다음에 배포하게 되어 2, 1이란 값을 리턴하게 된다. 이 점에 유의하며 코드를 작성해보았다. 우선 checkDay라는 int 변수를 만들고 거기에 기준 값을 두기로 했다. 작업일은 반복해서 사용하므로 따로 CheckNumber 함수를 만들어서 구할 수 있게 했으며, 기준 값보다 작업일이 낮거나 같으면 값을 1 올리고 아니라면 새로 기준을 잡고 다음 리스트를 삽입했다.

이번 문제는 컴퓨터가 연결되어 있는지 확인하고, 네트워크 개수를 return하는 문제이다. 그림을 보면 연결되어 있으면 1개로 취급하고,떨어져있으면 1개로 취급한다. 이번 문제는 상당히 힘들었다. 재귀를 써서 풀어야한다는 건 감을 잡았지만 어떻게 체크할지 고민했다가 검색을 통해 풀 수 있었다. 먼저 방문했는지 체크하기 위한 bool 배열을 만들고 크기는 컴퓨터의 개수 만큼인 n개를 선언한다. 그 후 반복문을 돌리는데 이때 Dfs 함수를 새롭게 만들어 컴퓨터가 서로 연결되어 있는지 확인한다. 매개변수는 연결 정보가 담긴 computer, 방문정보가 담긴 visited, 시작 지점인 int 형식의 start를 보낸다. Dfs에서도 반복문을 돌리는데 해당 위치값이 1이고, 방문 정보가 false이면 재귀한다.

이번 문제는 operations 배열에 담긴 값에 따라 처리해야 하는 문제이다. I라면 숫자를 삽입하고, D일 경우 1이면 최댓값 삭제, -1이면 최솟값 삭제 를 진행한다. 만약 비어있다면 패스한다. 여기서의 조건은 1. operations 배열 크기만큼 반복한다. 2. I인지 D인지 확인하고 진행한다. 우선 숫자를 담아둘 numbers 리스트를 선언하고 반복문을 만들어 실행합니다. 지역변수인 tempIndex_ 배열을 만들어서 split를 이용하여 공백을 기준으로 나눕니다. tempIndex_[0]를 참고하여 I인지 D인지를 판별하고 거기에 맞게 실행하도록 구현했습니다. 최댓값과 최솟값의 삭제는 간단하게 Sort 작업 후에 최댓값이면 number.Count - 1 을 이용하여 끝자리를 삭제하고 최솟값이..

이번 문제는 최소한의 귤의 종류 개수를 return 해야하는 문제이다. 여기서 담으려는 귤의 개수와 귤이 담긴 배열이 나오는데 귤이 난잡하게 섞여있다. 그래서 먼저 Sort를 사용하여 정렬 후 개수를 찾는 씩으로 해결해보려고 했다. 먼저 동일한 귤의 개수를 담을 list를 선언하고, tangerine 배열을 Array.Sort()를 사용하여 오름차순으로 정렬해줍니다. 그 후 반복문을 통해서 tangerine 배열의 첫번째를 기준으로 같은 값을 찾다가 동일한 값이 나오지 않는다면 그 값을 기준으로 설정하고 다시 거기부터 반복문을 실행하도록 했습니다. 그 후 동일한 귤의 개수를 담은 list인 checkNumbers를 Sort, Reverse를 통해 내림차순으로 변경하고 귤의 개수를 담은 k 값에 0번째부터..

이번 문제는 카펫의 크기를 구하는 문제이다. 여기서 조건은 1. 카펫의 가로 길이는 세로보다 같거나 크다. 2. 테두리 1줄은 갈색이고, 안쪽은 노란색이다. 만약 갈색 10, 노란색 2를 입력하면 4, 3이 출력된다. 여기서 결과의 공통점은 결과의 숫자에서 2를 빼면 4 - 2, 3 - 2 => 2, 1 2 * 1 = 2 즉, 노란색의 약수가 된다. 전체 크기를 구해야 하기에 brown + yellow 값을 sumArea에 저장하고, 3부터 sumArea 값까지 반복문을 실행한다. 이때 3부터 시작하는 이유는 노란색이 안쪽에 있어야 하기에 3보다 작을 수 없다. 그러다가 나머지 값이 0이 나온다면 tempNum_에 sumArea과 그 값을 나눈 값을 저장하고, 각각 2를 빼고 곱해서 yellow 값이 나..

이번 문제에서는 괄호가 바르게 짝지어져 있는지 알아보는 문제이다. 우선 올바른 규칙을 꺼내보자면 1. ')' 으로 시작하면 false 값을 출력한다. 2. 괄호가 열리면 닫혀야 한다. 간단하게 2개를 뽑아볼 수 있습니다. 그렇다면 괄호를 닫혔다는 걸 어떻게 파악해야할까요? 이 때 저는 int 변수를 만들고 '(' 을 확인하면 ++ ')'을 확인하면 -- 처리를 하여 마지막 int 변수 값이 0이라면 괄호가 올바르게 닫혔다고 처리하기로 했습니다. foreach문을 사용하여 손쉽게 string s를 char 형식으로 한글자씩 나누고 조건문에 따라 처리할 수 있도록 했습니다. answer는 true 임으로, 올바르지 못한 경우에만 false 처리를 하도록 만들었습니다.