분류 전체보기
슬라이드 퍼즐 알고리즘 (Slide Puzzle Algorithm)
0. 알아야할점!! 이 포스트는 퍼즐을 푸는 알고리즘인 A* 알고리즘이 아닌 슬라이드 퍼즐 같은 형태를 풀수있는지 없는지 알수있는 알고리즘이다. A*에비해 짦은 코드만으로 간편하게 확인할수있는게 장점이다. 1. 슬라이드 퍼즐이란?? 아래와 같이 15 개의 타일 (모든 타일에는 1에서 15까지의 숫자가 하나 있음)과 하나의 빈 공간이있는 4 × 4 보드가 있고 목표는 빈 공간을 사용하여 순서대로 타일에 숫자를 배치하는 것 이다. 인접한 4 개의 타일 (왼쪽, 오른쪽, 위, 아래)을 빈 공간으로 밀어 넣을 수 있다. 예를 들면 2. Inversion이란 무엇인가?? 타일이 N 행 (2차 배열)으로 펼쳐지는 대신 단일 행 (1차 배열)으로 되어있다고 가정하면, a가 b 앞에 나타나지만 a> b가 나타나면 타일..
Call by value / address / reference
이 포스트에서는 Call by value / Call by address / Call by reference 를 설명한다. 이 포스트에서는 값을 바꾸는 알고리즘을 예제로 한다. main 함수 int main() { int num1 = 10; int num2 = 20; cout
빙고 게임 구현하기
1. 빙고게임 규칙?? - 플레이어와 컴퓨터는 각자 5x5판에 1부터 25까지 숫자가 랜덤한위치에 존재 - 플레이어와 컴퓨터가 돌아가면서 1개의 숫자를 말하고 5개의 숫자가 가로 세로 혹은 대각선에 있을시 빙고 - 둘중 빙고를 3개 성공시 해당플레이어는 승리하고 게임 종료 2. 사용된 키워드 - 중복되지 않는 난수발생기 - 컴퓨터와 플레이어의 데이터 저장하는 자료구조는 구조체를 사용 - 컴퓨터와 플레이어가 공유하는 불러진 숫자판은 배열체 자료구조를 전역변수로 사용 - 구조체를 매개변수로 넘길때 참조형으로 넘김 - 배열을 이차배열이 아닌 1차배열로 구현 (이유는 연습) 3. 코드 #include #include #include #include #include using namespace std; //빙고만..
야구게임 구현하기
1. 야구게임 규칙?? - 컴퓨터가 고른 중복되지않은 3자리의 숫자를 맞추는 게임. - 자리수는 맞지않지만 플레이어가 입력한 숫자가 컴퓨터가 고른숫자에 존재하면 볼 - 자리수와 숫자가 맞으면 스트라이크 - 최대한 빠른시간 내에 컴퓨터의 볼을 맞춰라 2. 사용된 키워드 - 중복되지 않는 난수발생기 - 컴퓨터의 랜덤값을 저장하는 자료구조 (여기서는 배열을 사용) 3.코드 void BaseBallGame() { int playerPos[3], comPos[3], result[3]; bool playerNumUsed[9] = {}; bool comNumUsed[9] = {}; int strike = 0; int ball = 0; int match = 1; srand(time(NULL)); //컴퓨터 랜덤 값 구..
[HackerRank](c++) Jumping on the Clouds
https://www.hackerrank.com/challenges/jumping-on-the-clouds/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=warmup Jumping on the Clouds | HackerRank Jumping on the clouds www.hackerrank.com 문제 - int형 배열을 입력받는다. - 0은 갈수있는곳 1은 갈수없는곳이다. - 구름이 0 0 0 이렇게 3개 연달아 있으면 점프할수가 있다. (이동수 1개로 인정) - 최소한의 이동수를 구하여라 풀이법 1 - int jumpingOnClouds(vector c) { int moveCount ..
던전에서 몬스터 잡는 게임 구현하기
c++을 이용해서 간단하게 만드는 텍스트 프로그램형 게임이다. - 몬스터의 수를 랜덤으로생성 (3~5)한후 50프로의 확률로 방마다 생성 할지 말지 결정한다. - 몬스터를 생성하지않으면 ' ' 생성하면 'M' 로 표현한다. - 공격기술은 가위바위보형태를 만들어서 같은기술일경우 무효화 - 그외에는 기술간 차이로 이기게 구현한다. - 필살기는 상대가 뭘내든 상관없이 무조건 이기는 형태로 만든다. - 이길경우 레벨과 현레벨만큼 스킬포인트를 받는다. - 받은 스킬포인트는 기술공격력을 올리거나 크리티컬 혹은 회피율을 올린다. - 스킬을 올리고 난이후 방에서 쉴지 다음방으로 이동할지 결정할수있다. // Acedemy_20210607_Game.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실..
[HackerRank](c++) Counting Valleys
https://www.hackerrank.com/challenges/counting-valleys/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=warmup Counting Valleys | HackerRank Count the valleys encountered during vacation. www.hackerrank.com 문제: 계곡 계산하기 - 문자열을 입력받는다. - U는 위로 D는 아래로다. - 시작점과 끝지점 사이에 존재하는 계곡의 개수를 구한다. - 계곡 구별점은 평지 (시작점을 기준)으로 까지 올라와야 1개의 계곡으로 인정된다. 풀이법 1 - 만약 해당 인덱스의 문자가 U이고..
Symbolic constant(심볼릭상수) - const 활용하기
심볼릭 상수는 프로그램이 실행되기전 초기화한후 프로그램 실행중 수정이 불가능하다. 사용하는 키워드는 const이다. const float PI = 3.141592 int main{ PI = 3.14; //에러 발생 } 위 예제에서는 PI라는 이름의 상수를 만들었고 해당 값은 3.141592로 설정하였다. 이후 PI를 함수내에서 수정할려고 하면 에러가발생되므로 해당변수는 값을 변경할수없는 상수가 된것이다. 즉 읽기만 가능하고 쓰기는 불가