자바 35

[배열 연습] 2차원 배열 뱀 채우기 - Java

뱀 채우기? 2차원 배열을 채우는데에는 여러가지 방법들이 존재한다. 예를 들면 '순서대로 채우기', '지그재그 채우기', '빗금 채우기', '달팽이 채우기' 등이 있다. 이러한 2차원 배열 채우기의 다양한 방법들은 알고리즘 문제 풀이 사이트 '코드업'에서 연습해볼 수 있다. 문제집 / 기초5-3. 2차원 배열 www.codeup.kr 참고로 달팽이 채우기 문제에 대한 풀이는 다음 글을 참고해볼 수 있다. [코드업 - 1484] 2차원 배열 달팽이 채우기 4-1 - Java 문제 설명 [기초-배열연습] 2차원 배열 달팽이 채우기 4-1 다음과 같은 n*m 배열 구조를 출력해보자. 입력이 3 4인 경우 다음과 같이 출력한다. 1 2 3 4 10 11 12 5 9 8 7 6 입력이 4 5인 경우는 다음과 같이..

Algorithm/Basic 2022.08.03

Java의 변수에 대해 얇고 넓게 샅샅이 뜯어보자

목차 1. 변수란 무엇인가? 2. 변수의 선언 방법 3. 변수의 타입에 대해 알아보자 3-1. 프리미티브 타입 3-2. 레퍼런스 타입 3-3. 프리미티브 타입과 레퍼런스 타입의 차이 3-4. 래퍼 클래스 3-5. 명시적 타입 변환과 묵시적 타입 변환 4. 변수의 이름은 어떻게 정하지? 5. 변수의 종류 5-1. 지역 변수 5-2. 클래스 변수 5-3. 인스턴스 변수 6. 변수의 초기화 6-1. 기본값 초기화 6-2. 유용한 final 키워드 6-3. 여러가지 초기화 방법들 7. 리터럴? 8. 타입 추론과 var 9. 다수의 변수를 하나로 처리하기 위한 배열 변수(variable)란 무엇인가? 프로그래밍 언어에서의 변수란 '단 하나의 값을 저장할 수 있는 메모리 공간'을 의미한다. 여기서 주목해야할 점은 ..

Technology/Java 2022.08.01

JVM이란 무엇인가? JVM 파헤쳐보기

JVM이란 무엇인가? JVM(Java Virtual Machine)은 자바 가상 머신으로서 자바를 실행하기 위한 가상 기계(컴퓨터)라고 할 수 있다. 이때 가상 기계란 소프트웨어로 구현된 하드웨어로서 가상 컴퓨터는 실제 컴퓨터(하드웨어)가 아닌 소프트웨어로 구현된 컴퓨터라는 뜻으로 생각할 수 있다. 자바로 작성된 프로그램은 모두 이 JVM에서만 실행되기 때문에 자바 프로그램이 실행되기 위해서는 이 JVM이 반드시 필요하다. 이러한 특성으로 자바 프로그램은 OS와 하드웨어에 독립적이라 다른 OS에서도 프로그램의 변경없이 실행이 가능한 장점이 있다. 이러한 특성을 "Write once, run anywhere"라고도 한다. 다만, JVM의 경우에는 운영체제에 종속적이기 때문에 해당 OS에서 실행 가능한 별도..

Technology/Java 2022.07.23

소수를 판별하는 방법들 - Java

소수를 판별하는 방법들 때때로 알고리즘 문제를 풀다 보면 소수를 찾거나 소수의 개수를 구하는 등 특정 수가 소수인지를 판별해야하는 경우가 종종 발생한다. 여기서 소수란 1과 자기 자신으로 나누어 떨어지는 양의 수를 의미한다. 이때 1은 소수가 아니며 2와 3 그리고 5와 같이 1과 자기 자신으로 나누어 떨어지는 수는 소수이다. 이번 글에서는 특정 수가 주어졌을 때 그 수가 소수인지를 판별하는 방법들을 자바 프로그래밍을 통해 알아보고자 한다. 가장 직관적인 소수 판별 방법 public boolean isPrime(int n) { if (n < 2) { return false; } for (int i = 2; i

Algorithm/Basic 2022.06.11

[백준 - 7569] 토마토 - Java

문제 설명 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 풀이 회고 해당 문제는 BFS를 이용하여 풀이할 수 있었는데, 익은 토마토를 기점으로 익지 않은 토마토들이 점차 확산되어가며 익어간다는 점 그리고 익는데 며칠이 걸리는지를 구해야 한다는 점에서 BFS를 떠올릴 수 있었습니다. 이때 DFS를 사용하지 않았던 이유는 익은 토마토들이 여러 개 있을 때 익은 토마토들을 기점으로 동시 다발적으로 익지 않은 토마토들로 확산되어 갈텐데 DFS는 우선적으로 하나의 익은 토마토를 기점으로 확산시..

Algorithm/BOJ 2022.05.04