이번에 풀어볼 문제는 우리가 어릴 때 자주 해보았던 숫자 야구게임이다. 핵심 완전 탐색 문제답게 가능한 모든 수를 대입해보아야 한다. 즉 123~987까지 해당 조건(스트라이크, 볼의 카운트)에 맞다면, 참이 되는 수를 1 추가한다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int [][] arr = new int[105][3]; int n = sc.nextInt(); for (int i=0;i
1주 차에서 다룰 내용은 다음과 같다. 1. Computer Architecture 컴퓨터 구조 기초 컴퓨터의 구성 CPU 작동 원리 캐시 메모리 2. Java 컴파일 과정 Java Virtual Machine Call By Value/Call By Reference Casting AutoBoxing/AutoUnboxing Thread Computer Architecture 컴퓨터 구조 컴퓨터 시스템은 개념적으로는 하드웨어와 소프트웨어, 그리고 펌웨어의 결합으로 이루어진다. 하드웨어(Hardware) 컴퓨터 하드웨어는 컴퓨터 시스템이 작동하는 데 필요한 물리적 구성 요소이다. 하드웨어가 없다면, 컴퓨터를 유용하게 만드는 필수 소프트웨어를 실행할 방법이 없다. 시스템의 속도는 사용하는 하드웨어에 많은 영향..
완전 탐색 알고리즘 문제입니다. 핵심 처음에 이 문제를 풀려고 한다면, 여러 가지 방법을 떠올릴 것이다. 개인적으로 쉬운 방법은 배열의 거리를 구하는 것이다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int X = sc.nextInt(); int Y = sc.nextInt(); int R = sc.nextInt(); for (int i =1; i
완전 탐색 알고리즘 문제입니다. 핵심 문제가 어려워 보일 수 있으나, 단순한 문제이다. 0으로 된 배 열위에 값을 입력받고, 그 값이 몇 번 나왔는지 체크하는 것이다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int[][] arr = new int[101][101]; int n = sc.nextInt(); for (int i=1;i
우선 완전 탐색 알고리즘이란 가능한 모든 경우를 탐색하는 것이다. 아래의 체스 문제를 생각해보면, 룩이 이동 가능한 경우를 모두 탐색해보면 된다. 이때 출력은 1이다. 핵심 이 문제를 풀 때, 어떤 것을 기준으로 할까에 따라 풀이가 살짝 달라진다. 룩을 기준으로 하여, 룩의 이동경로 중 킹이 있다면 1 없다면 0을 출력하면 된다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[][] arr = new int[8][8]; int[] rookX = new int[2]; int[] rookY = new int[2]; i..
이번에는 다중 반복문과 배열에 대해 알아보자. 다중 반복문을 보기 전에 반복문의 설명을 보고 오는 것이 좋다. https://kimtaesoo99.tistory.com/45 조건문&반복문(java) 이번에 알고리즘을 다시 공부하면서 자바의 기초와 알고리즘을 정리하기로 하였다. 우선 매우 기초적인 변수의 타입부터 알아보자 변수의 타입 우선 변수란 -> 하나의 값을 저장할 수 있는 기억 kimtaesoo99.tistory.com 다중 반복문은 말 그대로 여러 개의 반복문이 중첩된 것이다. 중첩 for문을 보자 for(int i=2;i
배열을 선언한 뒤 풀어야 하는 arr3문제이다. 핵심 이중 배열을 선언하여, 위치를 나타낸다. 처음에 풀 때는 첫 번째 줄에 배열의 값을 저장한 뒤, 이후 나머지 줄의 배열을 규칙적으로 대입해주었는데, 더욱 쉬운 방법이 있다. 정답 코드 import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n =sc.nextInt(); int[][] arr = new int[105][105]; int x,y; int count=1; for (int i=0;i
알고리즘 공부를 하면서, 다시 한번 복습하고, 푸는 방법을 익히는 연습을 하기 위해 이 주제에 대해 글을 쓰기로 하였다. 다중 반복문을 이용한 문제인데, 숫자 피라미드라는 문제이다. 핵심 이 문제의 핵심은 홀수번째 줄에서 숫자가 증가하고, 짝수번째 줄에서는 숫자가 감소하는 것이다. 또한 숫자는 1~9까지만 반복한다. 그리고 출력을 할 때, 왼쪽에서 오른쪽으로 하기 때문에, 각 줄의 첫 번째 수를 찾는 방법 또한 매우 중요하다. 정답 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int s..
이번에 알고리즘을 다시 공부하면서 자바의 기초와 알고리즘을 정리하기로 하였다. 우선 매우 기초적인 변수의 타입부터 알아보자 변수의 타입 우선 변수란 -> 하나의 값을 저장할 수 있는 기억공간이다. 변수는 크게 기본형과 참조형으로 나눌 수 있다. 크기는 1byte, 2byte, 4byte, 8byte를 나타낸다. 크기가 중요한 이유는 각 변수의 크기를 넘기면 오버플로우가 발생하기 때문이다. 따라서 위 사진의 크기를 잘 지켜서 사용해야 한다. 조건문 조건문에 대해 알아보자. 조건문은 조건식과 실행될 하나의 문장 또는 블록{}으로 구성되어있다. java에는 if문과 swith문이 두 가지의 조건문이 있다. if문을 보자. if (조건식1) { 조건식1의 결과가 참일 때 실행하고자 하는 명령문; } else i..