본문 바로가기

전체 글104

[C++] [백준 2164] 카드2 문제 풀기 전 생각 : /* 문제를 읽어보면 알겠지만 제일 앞의 숫자를 삭제하고 뒤에 삽입하고 하는 작업을 쉽게 할 수 있는 컨테이너로 리스트가 있다. 그래서 리스트를 사용했다. */ #include #include using namespace std; int main() { list l; int n; cin >> n; for(int i=1 ; i 2021. 7. 25.
[C++] [프로그래머스] 방문 길이 문제 풀기 전 생각 : /* 문제가 참 길다... 읽기 너무 싫었다 다른 문제나 풀까 싶었지만 문제 따위에게 지지 않아!!! 하고 풀기 시작했지만 쉽지 않았다. 접근법은 먼저 이차원 배열 두개를 만든다. 가로로 이동한 기록을 남기는 배열 하나와 세로로 이동한 기록을 남기는 배열 하나다. 입력받은 문자에 따라 x좌표와 y좌표를 이동시키며 기록을 남긴다. 자세한 설명은 코드가 할거다. */ #include using namespace std; int solution(string dirs) { int answer = 0; int garo[12][12]={0,}; int sero[12][12]={0,}; int x=5,y=5; for(int i=0 ; i 9) continue; sero[x][y] = 1; x+.. 2021. 7. 25.
[C++] [프로그래머스] 약수의 개수와 덧셈 문제 풀기 전 생각 : /* 약수의 숫자가 짝수인지 판별하는 함수를 만든다. left부터 right까지 반복마다 인수판별 함수를 이용해 짝수라면 해당 숫자를 더하고 아니라면 해당 숫자를 감소시킨다. */ #include #include using namespace std; int count_insu(int n){ int count = 0; for(int i=1 ; i 1; i b ? 0 : sign(a)*a + solution(a + 1, b); } 이 코드는 재귀함수로 짠듯하다. 신박하네. #include using namespace std; int solution(int left, int right) { int answer = 0; int count = 2; int check = 2; if(left .. 2021. 7. 25.
[C++] [백준 2941] 크로아티아 알파벳 문제 풀기 전 생각 : /* 먼저 크로아티아 알파벳인지 아닌지 판별하는 함수를 만든다. 문자열로 입력받은후 두 글자씩 위의 함수에 넣는다. 만약 크로아티아 알파벳 이라면 카운트를 1 증가하고 다음 글자를 패스한다. 예외로 dz= 는 세글자 이기 때문에 dz=일 경우 다음 두 글자를 패스한다. 만약 크로아티아 알파벳이 아니라면 그냥 카운트만 1 증가시킨다. 마지막에 카운트를 출력한다. */ #include #include using namespace std; int iscroi(string s){ string croi[8] = {"c=","c-","dz","d-","lj","nj","s=","z="}; for(int i=0 ; i> s; for(int i=0 ; i 0 ){ if(iscroi(s.subst.. 2021. 7. 25.
[C++] [LeetCode 125] Valid Palindrome (pps 5-6) 문제 풀기 전 생각 : /* 문자열의 안에 있는 알파벳과 숫자가 아닌 것들은 제외시키고 남아있는 것들로 앞뒤가 같은지 반복문으로 판별한다. */ class Solution { public: bool isPalindrome(string s) { string str = ""; for(int i=0 ; i 2021. 7. 22.
[C++] [LeetCode 412] Fizz Buzz (pps 5-5) 문제 풀기 전 생각 : /* 반복문을 돌린다. 반복문을 돌릴때 사용하는 변수 i를 사용한다. i 는 1로 시작한다. 이유는 나머지 계산할 때 가독성을 위해서 i가 3과 5로 나누어 떨어질 때 FizzBuzz 를 백터에 추가하고 3으로만 나누어 떨어지면 Fizz 를 백터에 추가한다. 5로만 나누어 떨어지면 Buzz 를 백터에 추가하고 위의 경우들에 해당하지 않는다면 그냥 i를 추가한다. */ class Solution { public: vector fizzBuzz(int n) { vector v; for(int i = 1 ; i 2021. 7. 22.
4. dialogue system 구축 한동안 알바와 캠프 문제 푸느라 방학 프로젝트를 놨었다... 그리고 요 며칠동안 npc랑 대화하는 기능을 구현하려고 했는데 아무리 유튜브를 찾아 봐도 볼트로 대화 시스템을 구축하는 방법은 나와있지 않았다. 내가 직접 만드는 건 너무 어렵고 오래 걸리는 방법이기에 이미 만들어진 에셋을 사용하기로 했다. 여러 에셋들을 사용해보면서 어느것이 작동되는지 그리고 어느것이 볼트랑 연동이 되는지 테스트 해보았다. 그리고 오늘 오전내내 dialogue system만 붙잡으면서 어느정도 에셋 사용에 성공했다. 이런 식으로 그래프를 사용해서 대화를 만들어두면 실제 게임에서 이런 대사들을 엔피시를 클릭하거나 말을 걸었을때 출력하도록 할 수 있다. 이런식으로 출력이 된다. 대화창 같은 경우엔 커스터마이징이 가능한 것으로 보인.. 2021. 7. 21.
[C++] [LeetCode 1154] Day of the Year (pps 5-4) 문제 풀기 전 생각 : /* 예전에 날짜 구하는 문제를 수업과제로 해본 적이 있어서 푸는 방법을 알고 있었다. 대신 입력받은 date를 year month day로 나눠야 한다. 이 부분은 split이 없으니 직접 반복문으로 처리해줘야 한다. */ #include class Solution { public: int dayOfYear(string date) { int days[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; int ymd[3]; int i=0,answer=0; string tmp = ""; date += '-'; for(int j=0 ; j 2)++d; return d; } }; 삼항 연산자를 잘 사용하면 저렇게 간단하게도 풀수 있구나 신기하구만요 subst.. 2021. 7. 18.
[JAVA] [백준 5355] 화성 수학 (pps 5-2) 문제 풀기 전 생각 : /* 처음에 c++ 로 풀려고 했는데 문자열을 입력받고 처리하는 과정이 귀찮아져서 split 기능이 내장된 자바를 사용하기로 했다. 자바로 총 몇번을 입력받을지 스캐너로 입력받고 해당 횟수만큼 반복문을 사용한다. 매 반복마다 한 줄 단위로 문자열을 입력받고 입력받은 문자열을 스플릿 한다. 스플릿 한후 가장 첫번째 문자는 숫자이다. 이 숫자를 float 타입으로 변환하고 그 다음에 오는 연산자들에 따라서 더하고 빼고 곱한다. */ import java.util.Scanner; class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n = Integer.parseInt(s... 2021. 7. 18.
[C++] [백준 2163] 초콜릿 자르기 (pps 5-1) 문제 풀기 전 생각 : /* 초콜릿을 최소한의 자르기로 1x1로 자르기 위해선 더 긴 모양이 나오도록 자르고 긴 모양으로 나온것을 쪼개는 것이 가장 적은 횟수의 자르기로 자를 수 있다. 예를 들어 ***** ***** ***** ***** 의 5x4 초콜릿이 있다고 한다면 ***** ***** ***** *****로 나누면 3번의 자르기 그리고 ***** 를 * * * * *로 나누기 위해 4번의 자르기 그리고 ****가 세개 있으니 4번씩 4회 자른 셈이다 그렇게 총 19번의 자르기로 자를 수 있다 결국 5x4 = 20 20-1 == 19 a * b - 1 가 답이다. */ https://www.acmicpc.net/problem/2163 2163번: 초콜릿 자르기 정화는 N×M 크기의 초콜릿을 하나 .. 2021. 7. 18.
[C++] [백준 1476] 날짜 계산 (pps 4-9) 문제 풀기 전 생각 : /* e s m 을 모두 입력받고 변수 세개를 선언하고 1으로 초기화한다. count 변수를 만들고 1로 초기화 한다. 반복문으로 이 변수들을 1씩 증가시키며 입력받은 e s m 과 같다면 count을 출력한다. 그리고 조건문으로 e는 15보다 크다면 s 는 28보다 크다면 그리고 m은 19보다 크다면 1로 초기화한다. */ #include using namespace std; int main() { int answer[3]; cin >> answer[0] >> answer[1] >> answer[2]; int e=1,s=1,m=1; int count = 1; while(count++){ if((e == answer[0]) && (s == answer[1]) && (m == ans.. 2021. 7. 18.
[C++] [백준 1712] 손익분기점 (pps 4-8) 문제 풀기 전 생각 : /* 문제를 처음 봤을 때 정답률이 20퍼센트 즈음이라 많이 어려운가 싶어 입출력 예시를 보니 너무 간단한 문제였다. 결국 손익 분기점을 계산하기 위해 한대를 팔때 얻는 순수익을 구해야 한다. 순수익은 c-b 이다 만약 c-b가 0보다 작거나 같으면 해당 제품은 순익분기점이 존재하지 않는다. 그리고 순익분기점은 총 유지비를 c-b로 나누었을때 나오는 값의 1을 더한것이다. */ #include using namespace std; int main() { int a,b,c; cin >> a >> b >> c; if(c 2021. 7. 18.