본문 바로가기

전체 글

(36)
CS50_컴퓨팅 사고 1. 컴퓨팅 사고 1) 2진법 컴퓨터에는 오직 0과 1로만 데이터를 표현합니다. 0과 1로만 표현하는 것을 2진법이라고 합니다. 컴퓨터는 오로지 0과 1만으로 숫자 뿐만 아니라 글자, 사진, 영상, 소리 등을 저장 진법에서는 두 개의 숫자만 있으므로 각 자리수가 2의 거듭제곱을 의미 비트 2) 정보의 표현 문자를 숫자로 표현 할 수 있도록 정해진 약속(표준) : ASCII CODE 3) 알고리즘 입력(input)에서 받은 자료를 출력(output)형태로 만드는 처리 과정 입력값을 출력값의 형태로 바꾸기 위해 어떤 명령들이 수행되어야 하는지에 대한 규칙들의 순서적 나열4 4) 스크래치: 기초 5) 스크래치: 심화
🪜사다리 게임 # 2022.04.18~2022.05.02 🎈 구현 기능 목록 입력 참여자 이름 실행 결과 최대 사다리 높이 결과 보고싶은 사람 이름 (개인 or all) 출력 사다리 결과 하나의 가로 라인을 가지고 있는 Line Class 하나의 세로 라인에 빈 값이 없도록 가로 라인을 생성하는 로직 추가 최대 사다리 높이만큼 Line을 가지고 있는 Ladder Class 실행 결과 (개인 or all) 라인을 따라 player의 위치를 이동 시켜 실행 결과를 생성하는 로직 추가 🚀 기능 요구 사항 사다리 게임에 참여하는 사람에 이름을 최대5글자까지 부여할 수 있다. 사다리를 출력할 때 사람 이름도 같이 출력한다. 사람 이름은 쉼표(,)를 기준으로 구분한다. 사람 이름을 5자 기준으로 출력하기 때문에 사다리 폭도 넓어져야 한다. 사다리 타기가 정상적으로 동작하..
🃏블랙잭 게임 # 2022.03.13~2022.04.09 🚀 블랙잭 1단계 기능 요구사항 블랙잭 게임을 변형한 프로그램을 구현한다. 블랙잭 게임은 딜러와 플레이어 중 카드의 합이 21 또는 21에 가장 가까운 숫자를 가지는 쪽이 이기는 게임이다. 플레이어는 게임을 시작할 때 배팅 금액을 정해야 한다. 카드의 숫자 계산은 카드 숫자를 기본으로 하며, 예외로 Ace는 1 또는 11로 계산할 수 있으며, King, Queen, Jack은 각각 10으로 계산한다. 게임을 시작하면 플레이어는 두 장의 카드를 지급 받으며, 두 장의 카드 숫자를 합쳐 21을 초과하지 않으면서 21에 가깝게 만들면 이긴다. 21을 넘지 않을 경우 원한다면 얼마든지 카드를 계속 뽑을 수 있다. 단, 카드를 추가로 뽑아 21을 초과할 경우 배팅 금액을 모두 잃게 된다. 딜러는 처음에 받은 2장..
🎰로또 게임 (MVC 패턴) #2022.02.21~2022.03.05 🚀 기능 요구사항 로또 게임 기능을 구현해야 한다. 규칙을 모르면 검색해 로또 규칙을 찾아본다. 로또 구입 금액을 입력하면 구입 금액에 해당하는 로또를 발급해야 한다. 로또 1장의 가격은 1000원이다. 로또 당첨 금액은 고정되어 있는 것으로 가정한다. 수익률을 계산해 출력해야 한다. ✍🏻 입출력 요구사항 ⌨️ 입력 로또 구입 금액 로또 당첨번호 로또 보너스 번호 🖥 출력 구입한 로또 개수만큼 생성된 로또번호 목록 3개를 구매했습니다. [8, 21, 23, 41, 42, 43] [1, 3, 6, 7, 33, 37] [6, 16, 25, 29, 39, 45] 당첨 통계 당첨 통계 -------------- 3개 일치 (5000원) - 1개 4개 일치 (50000원) - 0개 5개 일치 (1500000원) ..
Could not find method testCompile() for arguments [{group=junit, name=junit, version=4.12}] 버전 변경 build.gradle plugins { id 'java' } group 'cleancode-study' version '1.0-SNAPSHOT' sourceCompatibility = 1.8 repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.12' } dependencies { testCompile('org.junit.jupiter:junit-jupiter:5.4.2') testCompile('org.assertj:assertj-core:3.11.1') } test { useJUnitPlatform() }
char to int / ASCII CODE Char > int char - '0'; ASCII CODE (int)char
완전 탐색/DFS/BFS 완전 탐색 (브루트 포스) 가능한 모든 경우의 수를 다 시도해 답을 찾는 방법 정확하고 확실하게 답을 찾을 수는 있지만, 시간이 오래 걸린다. 모든 경우의 수를 구하는 문제 같은 부분에서 많이 사용되는 알고리즘 - 완전 탐색 기법 종류 DFS(깊이 우선 탐색) : 루트 노드에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법 어떤 노드를 방문했었는지 여부를 반드시 검사 1. 순환 호출 이용(자기 자신을 호출하는순환 알고리즘의 형태) 2. 명시적인 스택 사용 명시적인 스택을 사용하여 방문한 정점들을 스택에 저장하였다가 다시 꺼내어 작업한다. 사용하는 경우: 모든 노드를 방문 하고자 하는 경우에 이 방법을 선택한다. 깊이 우선 탐색(DFS)이 너비 우선 탐색(BFS)보다..
Stack/Queue/Deque/PriorityQueue Stack Last-In, First-Out -> LIFO 나중에 들어간 것이 먼저 나오는 구조 push: 데이터 삽입 pop: 데이터 조회 + 삭제 peek: 데이터 조회 clear: 데이터 전체 삭제 size: stack 사이즈 empty: stack 비어있는지 여부 contains: 특정 데이터 포함 여부 search: 특정 데이터 위치 반환 Queue First-In, First-Out -> FIFO 먼저 들어간 것이 먼저 나오는 구조 LinkedList로 생성 ex) Queue queue = new LinkedList(); add / offer: 데이터 삽입 remove / poll: 데이터 삭제 peek: 데이터 조회 clear: 데이터 전체 삭제 Deque queue의 양쪽으로 데이터를 삽입..