Java/Daily-Java 12

[자바의 정석] Exercise (7_10&11)

해당 연습문제는 자바의 정석3판 연습문제를 참조했습니다. getter & setter 생성문제다. 아주 간단한 문제지만 , 사용자 입장에서 생각해봤을때 어떤게 추가되어야 할지 생각해봐야한다. class MyTv2{ private boolean isPowerOn; private int channel; private int volume; final int MAX_VOLUME = 100; final int MIN_VOLUME = 0; final int MAX_CHANNEL = 100; final int MIN_CHANNEL = 1; public boolean isPowerOn() { return isPowerOn; } public void setPowerOn(boolean powerOn) { isPowerOn..

Java/Daily-Java 2021.07.08

[자바의 정석] Exercise (7_1) +

해당 연습문제는 자바의 정석3판 연습문제를 참조했습니다. 1) shuffle Math.random() 을 이용, 배열의 자리를 바꿔줌으로써 배열을 섞어주는 메서드 void shuffle(){ for(int i=0; i 바로 유효성검사 코드를 중복하지 않을 수 있다는것 SutdaCard pick(){ int random = (int)(Math.random() * cards.length); return pick(random); } Answer class SutdaDeck { final int CARD_NUM = 20; SutdaCard[] cards = new SutdaCard[CARD_NUM]; // 하나의 카드덱 SutdaDeck(){ for (int i = 0; i < cards.length; i++)..

Java/Daily-Java 2021.07.07

[자바의 정석] Exercise (7_1)

해당 연습문제는 자바의 정석3판 연습문제를 참조했습니다. SutdaDeck() 안에서 배열 SutdaCard 를 구현해보자 class SutdaDeck { final int CARD_NUM = 20; SutdaCard[] cards = new SutdaCard[CARD_NUM]; SutdaDeck(){ //SutdaCard 배열을 초기화하는 메서드 //구현하기 } } } class SutdaCard{ int num; boolean isKwang; SutdaCard() { this(1, true); } SutdaCard(int num, boolean isKwang) { this.num = num; this.isKwang = isKwang; } @Override public String toString() ..

Java/Daily-Java 2021.07.06

[JAVA 복습] 미니게임 WarriorVsMagician (update ver.2)

● 최대한 객체지향에 맞춰서 코드를 변경해보려 했지만, 아직 어디를 더 객체지향적으로 손봐야 할지 감이 오질 않는다. 코드를 바꾸면서 기존에 존재하던 규칙을 바꾸어 보았다. 먼저 기존의 규칙을 살펴보면 rule) 플레이어 두 명은 가위바위보를 하여 공격권을 얻어 자신의 플레이어 코드( warrior //player 1 , magician //plater 2)를 입력하면 공격을 한다. 개선점 사용자의 입력에 맞춰서 1/2 확률로 공격을 하도록 하여 현실에서 필요한 가위바위보를 없애며 운 적인 요소도 필요함과 동시에 확률을 단순히 1/2로 맞춰서 비등비등한 긴장감을 자아낼 수 있도록 하였음 잘못된 명령어 입력 시 재귀 호출을 사용하여 "go"외의 명령어는 허용치 않게 설계 다음에 추가하고 싶은 점 전적 기록..

Java/Daily-Java 2021.05.25

[JAVA 복습] 미니게임 WarriorVsMagician

● 추상클래스와 다형성을 이용하여 만든 간단한 미니게임이다. 추상클래스를 인터페이스로 바꾸어도 실행에는 문제가 없다. import java.util.Scanner; abstract class Fightable { abstract int attack (); abstract boolean guard(); } class Warrior extends Fightable { int HP = 150; int guardProperty = 70; @Override public int attack() { return 10; } @Override public boolean guard() { int x = (int)(Math.random()*10)+1; if(x*10>guardProperty) return true; else..

Java/Daily-Java 2021.05.18

[Array] 버리긴 아까운 백준 오답 (feat.MultiArray,No.4434)

● 예제의 출력 결과만 보고 코딩을 하니 이런 식으로 코딩을 해 벼렸다고 한다. 그래도 2차원 배열은 어느 정도 할 줄 아는 듯하다.. public class Main { public static void main(String[] args) { int[][] Case = { { 5 }, { 5, 50, 50, 70, 80, 100 }, { 7, 100, 95, 90, 80, 70, 60, 50 }, { 3, 70, 90, 80 }, { 3, 70, 90, 81 }, { 9, 100, 99, 98, 97, 96, 95, 94, 93, 91 } }; int[] sumArr = new int[Case[0][0]]; for (int i = 1; i < Case.length; i++) { for (int j = ..

Java/Daily-Java 2021.04.21

[Array] 2차원 배열의 90도 회전

● 2차원 배열을 90도 회전시키려면 어떻게 해야 할지를 생각해보자 주어진 배열↓ char[][] star = { {'*','*',' ',' ',' '}, {'*','*',' ',' ',' '}, {'*','*','*','*','*'}, {'*','*','*','*','*'} }; star 2차원 배열을 90도 돌려놓은 2차원 배열 result 배열을 생성하여 star배열의 성분들을 옮길 것이다. 그리고 그 안의 성분들을 정말로 90도 회전하여 옮긴다는 생각으로 코드를 짜 보자 1) 배열의 회전 4행 5열의 2차원 star배열의 성분들을 옮겨 담을 곳 result 배열을 생성, 이제 star의 행을 90도 회전시켜서 넣을지 열을 회전시켜 넣을지 고민해봐야 한다. 공부하는 입장이기에 2가지의 경우를 모두 ..

Java/Daily-Java 2021.04.20

[Array] 동전 거슬러주기 _ Part 2 (응용)

● 동전을 거슬러주자 다만 part1과 달리 이번엔 동전의 개수가 정해져 있다. 문제 (출처: 자바의 정석 연습문제) public class Practice07 { public static void main(String[] args) { if (args.length != 1) { System.out.println("USAGE: java Exercise5_7 3120"); System.exit(0); } int money = Integer.parseInt(args[0]); //커맨드라인으로 받은 변수는 문자열이므로 정수로 변환한다. System.out.println("money=" + money); int[] coinUnit = { 500, 100, 50, 10 }; int[] coin = { 5, 5, ..

Java/Daily-Java 2021.04.15

[Array] 동전 거슬러주기 _ Part 1

● Java를 이용한 동전 거슬러주는 코드를 작성해보자 문제 조건 : A. 내가 가진 동전의 종류 : 500원 100원 50원 10원 B. 동전의 개수는 무제한 C. 500원부터 10원 순서로 큰 금액의 동전을 우선적으로 거슬러 줘야 한다 D. 받은돈(money) : 2680 Result↓ money=2680 500 : 5 100 : 1 50 : 1 10 : 3 1) 배열 설정 int [] coinUnit = {500,100,50,10}; int [] coinNum = new int [4]; // coinUnit 당 거슬러 줄 동전의 개수를 넣어줄 배열 출력 시 필요 2) 거슬러 줄 동전의 갯수 구하기 int money = 2680; // 거슬러 줘야 할 돈의 액수는 중요치 않으므로 조건에 안 넣음 26..

Java/Daily-Java 2021.04.15

[Array] 배열을 응용한 " * " 출력 예제

● 배열을 응용한 " * " 출력 예제 int[] Arr = { 1,4,4,3,1,4,4,2,1,3,2 }; Q : 주어진 배열에 중복하는 숫자의 개수만큼 각각 * 를 출력하는 코드를 작성하라 Result ↓ 3*** 2** 2** 4**** 1) 배열을 선언하자 int[] Arr = { 1,4,4,3,1,4,4,2,1,3,2 }; 그리고 * 를 찍어줄 "횟수"를 담아줄 배열을 만든다. int[] Arr2 = new int[4]; // 4개의 숫자의 중복횟수를 넣을꺼니 인덱스는4개 2) 무엇을 구해야 하는가 이것을 어떻게 프로그래밍으로 구현할것인가 우선 우리는 Arr에서의 중복되는 숫자의 횟수를 구해야한다. 그리고 그값을 Arr2에 넣을것이다. Arr2[0] = 중복횟수 (+1+1+1) Arr2[1] =..

Java/Daily-Java 2021.04.13