문제https://www.acmicpc.net/problem/7562풀이이전에 풀었던 BFS 관련 문제들과 거의 유사하며 차이점으로는 방향이 8방향으로 변형된 형태이다.도착지까지의 최소 이동 횟수를 구해야 하기 때문에 출발지에서 BFS 탐색을 하여 게임판 모든 좌표까지의 최소 이동 거리를 구한다.이후에 출력할 때, 도착지의 좌표에 저장된 이동 횟수를 출력한다.Codeimport java.util.*;import java.io.*;public class Main { static int [][] board; static boolean [][] visited; static int count = 0; static int l, nowX, nowY, desX, desY; static Qu..
운영체제란운영체제: 사용자가 컴퓨터를 편리하고 효율적으로 사용할 수 있도록 환경을 제공하는 시스템 소프트웨어입니다. 하드웨어를 제어하고 응용 프로그램이 하드웨어 자원을 효율적으로 사용할 수 있도록 중간에서 조율하는 역할을 합니다.대표적인 운영체제로는 Windows, Linux, Mac 등이 있습니다. 운영체제의 주요 역할프로세스 관리: 여러 프로그램이 동시에 실행될 수 있도록 CPU의 사용 순서를 조절하고, 프로세스 간 통신 및 자원 공유를 관리합니다.저장장치 관리: 메인 메모리와 하드디스크 등의 자원을 효율적으로 관리하고, 가상 메모리와 파일 시스템을 통해 안정적인 데이터 저장을 지원합니다.네트워킹: 인터넷 연결 및 다양한 네트워크 프로토콜(TCP/IP 등)을 지원하여, 시스템 간 통신을 가능하게 합니..
문제https://www.acmicpc.net/problem/7569풀이해당 문제는 이전의 10026: 적록색약 문제와 유사하면 높이만 추가된 문제이다. 높이가 추가되었기 때문에 dh 배열을 추가하여 기존의 4방향(상, 하, 좌, 우)에 2방향(위, 아래)을 추가로 탐색해야 한다. 배열 선언은 3차원 배열이기 때문에 storage[h][n][m]처럼 첫 값에 높이가 들어가야 한다.Codeimport java.util.*;import java.io.*;public class Main { static int m, n, h; static int days = 0, yet = 0; static int [][][] storage; static boolean [][][] visited; s..
JVM, JDK, JREJVM(Java Virtual Machine: 자바 가상 머신)자바 애플리케이션을 실행하기 위해 이식 가능한 런타임 환경을 제공하는 소프트웨어 입니다.JVM의 주요 목적은 자바 프로그램이 어떤 운영체제나 기기에서도 동일하게 실행할 수 있도록 지원하는 것과 프로그램의 메모리를 관리하고 최적화하는 역할을 수행합니다. 또한, JVM은 OS와 Java 프로그램 사이에서 중재자 역할을 하며, 특정 OS에 종속되지 않고 애플리케이션이 독립적으로 동작할 수 있게 해줍니다. JRE(Java Runtime Envirnment: 자바 런타임 환경)자바 프로그램을 실행하기 위한 환경으로 JVM과 자바 프로그램을 실행하는 데 필요한 라이브러리 파일이 포함되어 있어, 개발이 아닌 실행만 할 때 사용됩니다..
1. 트랜잭션(Transaction)트랜잭션은 데이터베이스에서 하나의 논리적인 작업 단위를 의미합니다.트랜잭션은 모두 수행되거나(Commit), 하나도 수행되지 않아야(Rollback) 데이터의 일관성을 유지할 수 있기 때문에 트랜잭션은 데이터베이스의 신뢰성과 무결성을 보장하는 핵심 개념입니다. ■ 트랜잭션이 왜 필요한가요?트랜잭션은 예기치 못한 시스템 장애나 동시성 문제로부터 데이터의 무결성을 보호하기 위해 필요합니다.예를 들어, 현금 인출 도중 정전이 발생하거나, 두 사용자가 동시에 같은 계좌를 인출할 경우 데이터가 꼬일 수 있습니다. 이러한 상황에서 트랜잭션을 사용하면, 중간에 문제가 생겨도 전체 작업을 되돌릴 수(Rollback) 있기 때문에 데이터의 정합성과 일관성을 유지할 수 있습니다.또한, ..
Connection Pool : 데이터베이스와 연결되는 Connection 객체를 미리 여러 개 생성해두고, 이를 요청할 때 꺼내서 사용하고 다시 반환하는 기법 ■ 사용하는 이유웹 애플리케이션에서는 클라이언트의 요청이 들어올 때마다 DB 연결이 필요하지만, 매번 새로운 Connection을 생성하고 소멸하는 과정은 성능상 부담이 크다.→ Connection Pool을 사용하면 매번 연결을 새로 만들 필요 없이, 미리 만들어진 Connection을 재사용함으로써 DB 접근 시간을 단축하고 리소스 사용을 효율화할 수 있다. → 동시에 생성 가능한 Connection 수를 제한하여 DB 서버에 부하가 집중되는 것을 방지할 수 있다. ■ Connection이 부족할 때, 시스템은 어떻게 동작하나요?Connect..
문제https://www.acmicpc.net/problem/10026 풀이적록색약은 빨간색과 초록색의 차이를 거의 느끼지 못하는 것으로 빨간색과 초록색을 같은 색으로 판단한다.왼쪽의 그림을 적록색약이 아닌 사람이 봤을 때 구역의 수는 총 4개(R: 2, G: 1, B: 1)이다.하지만, 적록색약인 사람이 봤을 때, 빨간색과 초록색을 같다고 판단하기 때문에 오른쪽의 그림처럼 총 3개(R/G: 2, B: 1)로 판단한다. 이 문제를 풀기 위해서는 적록색약인 경우와 아닌 경우를 구분하여 BFS 탐색을 하도록 풀면 된다.Codeimport java.util.*;import java.io.*;public class Main { static int n; static char [][] graph; ..
10월 15일 우테코 7기 프리코스가 시작되었다! 1주차 과제는 문자열 덧셈 계산기였다.https://github.com/sgn07124/java-calculator-7/tree/sgn07124 GitHub - sgn07124/java-calculator-7Contribute to sgn07124/java-calculator-7 development by creating an account on GitHub.github.com 처음 문제를 읽었을 때는 생각보다 문자가 짧았던 것 같다. 위에서 부터 순서대로 과제 진행 요구 사항, 기능 요구 사항, 입출력 요구 사항, 프로그래밍 요구 사항을 꼼꼼히 읽은 후 방향을 잡기 시작했다. 과제를 시작하기 전에 먼저 한 일은 미션 저장소를 fork하고 branch를 ..
객체지향과 인지 능력사람들이 객체지향을 직관적이고 이해하기 쉬운 패러다임라고 말하는 이유는 객체지향은 세상을 자율적이고 독립적인 객체들로 분해할 수 있는 인간의 기본적인 인지 능력에 기반을 두고 있기 때문이다.인간은 좀 더 단순한 객체들로 주변을 분해함으로써 자신이 몸 담고 있는 세상을 이해하려고 한다. 따라서 객체는 인간이 분명하게 인지하고 구별할 수 있는 물리적인 또는 개념적인 경계를 지닌 어떤 것이다.하지만 유사성은 여기까지다. 객체지향 패러다임의 목적은 현실 세계를 모방하는 것이 아니라 새로운 세계를 창조하는 것이다. 사람의 손길 없이 스스로 불을 밝힐 수 없는 현실세계의 전등과는 다르게 소프트웨어 세계의 전등은 스스로 처리가 가능하다. 이렇게 우리는 유사하면서도 이질적인 객체지향의 세계를 바라볼..