2023-08-28 TIL
Code Kata
자연수 뒤집어 배열로 만들기
오늘 알고리즘 문제는 조금 어려워서 해설을 참고했는데, 생각보다 사용한 함수가 꽤 많아서 직접 힘으로는 풀기 힘들었을 것이다...
public class Solution {
public int[] solution(long n)
{
// n을 문자열로 변환
string temp = n.ToString();
// 문자열의 길이만큼의 배열 생성
int[] answer = new int[temp.Length];
// 문자열의 길이만큼 for문 반복
for (int i = 0; i < temp.Length; i++)
{
// 한글자씩 배열에 순서대로 담는다
answer[i] = (int)Char.GetNumericValue(temp[temp.Length-1 - i]);
}
return answer;
}
}
자연수 n 값을 문자열로 변환한 다음 문자열을 뒤에서부터 한 글자씩 담는것으로 구현할 것이다.
string temp = n.ToString
=> temp 라는 문자형 변수를 만들어 자연수 n 을 ToString을 사용하여 문자형으로 변환한 후 할당한다.
int[] answer = new int[temp.Length]
=> 그리고 새롭게 할당된 문자형 temp 변수의 길이만큼(temp.Length) 배열을 생성한다.
for (int i = 0; i < temp.Length; i++)
=> 반복문을 활용해 i는 0으로 초기화되고, temp 배열의 길이보다 작을 때까지 반복한다.
{ answer[i] = (int)Char.GetNumericValue[temp.Length-1 -i]); }
=> 해당 부분은 루프의 각 반복에서 실행되는 부분이며, temp 배열에서 요소를 읽어와 answer 배열에 저장하는 역할을 한다. "temp.Length - 1 - i"는 temp 배열에서 역순으로 요소를 읽기 위함이고 마지막 요소에서 시작하여 루프가 진행될 때마다 1씩 감소한다. 그리고 Char.GetNumericValue 는 temp 배열의 해당 위치에 있는 문자를 숫자 값으로 변환한다. 그래야 answer 값에 배열로써 생성될 수 있기 때문이다.
오늘 코드 카타에서 핵심내용은 변수를 잘 보면서 형변환을 하고, 배열을 역순으로 출력하는 함수를 사용하는 것이다.
문제를 풀고 나서 다른 사람의 풀이 중 정말 깔끔하게 잘 짜신 분이 있었다. 이것 또한 참고해서 공부하면 좋을 듯 하다.
using System;
public class Solution {
public long [] solution(long n) {
int size = n.ToString().Length;
long[] answer = new long[size];
for(int i = 0; i < size; i++){
answer[i] = n % 10;
n /= 10;
}
return answer;
}
}
프로그래밍 심화 팀 과제
오늘부터 새로운 조편성과 함께 지난 개인 프로젝트에서 진행한 콘솔을 활용한 RPG 게임 만들기의 연장선인 과제가 시작 되었다.
저번 개인과제에서는 던전을 떠나기 전의 일련의 과정을 그리는 것에서 그쳤다면, 이번에는 던전에 들어가서 몬스터와 싸우는 과정을 구현하는 것이 목표인 과제이다.
우선 기본적인 틀은 튜터님께서 제공해주셨던 개인과제 해설 알고리즘을 기반으로 작성하기로 하였고, 내가 맡기로 한 부분은 회복아이템인 포션을 사용하는 것과 던전결과 레벨업, 보상등 부가적인 요소이다.
- 포션은 기본적으로 3개가 제공됨
- 던전 입장 전에 포션을 사용할 수 있음
만약, 보유 포션이 충분하다면 회복 그렇지 않으면, 포션이 부족하다는 문구가 출력되어야 함
- 포션의 회복량은 30이며 최대 체력보다 높게 회복되지는 않음
스파르타 던전에 오신 여러분 환영합니다.
이제 전투를 시작할 수 있습니다.
1. 상태 보기
2. 전투 시작
3. 회복 아이템
원하시는 행동을 입력해주세요.
>>
회복
포션을 사용하면 체력을 30 회복 할 수 있습니다. (남은 포션 : 3 )
1. 사용하기
0. 나가기
원하시는 행동을 입력해주세요.
>>
이러한 조건들을 만족시키기 위해서 내가 생각한 방법은 이러하다.
- 새로운 콘솔창을 뜨게하여 회복아이템을 관리
- 우선적으로, 포션이 한 종류밖에 없다는 가정 하에 포션의 종류를 만들기 위해 따로 리스트를 구현할 필요는 없어보임
- 보유한 포션의 수량에 따른 조건도 존재해야 함.
1) 포션을 사용하였을 때, 남은 포션의 갯수가 줄어들어야 함
2) 포션이 부족할 경우 사용하였을 때, 포션이 부족하다는 문구가 출력되어야 함 ( 포션 <= 0 일 때, "포션이 부족합니다." )
3) 포션이 충분할 경우 사용하였을 때, 회복이 되어야 하며 최대 체력보다 높게 회복되지는 않는다.
( 포션 > 0 일 때, player의 hp는 +=30 이 되어야 하고 상태창에 반영되어야 함.)
이러한 부분을 구현하기 위한 방법을 조금 더 공부해 봐야겠다...