전체 글 73

[백준] 2941: 크로아티아 알파벳

문제 https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= www.acmicpc.net 문제 풀이 처음 문제를 봤을 때 어떤 풀이 방법으로 해결해야 하나 싶어 지레 겁을 먹었지만 이 문제 풀이는 별다른 방법보다 그냥 하면 되는 것 같다. 8개의 조건 뿐이라 각각 if문 작성하는 것이 어려운 일은 아니었다. 1. 문자열을 입력받고 split 함수로 문자열 배열을 만든다. 2. 문자열 배열의 인덱스 하나씩 접근하여 크로아티아 알파벳의 조건에 부..

Algorithm/BaekJoon 2023.02.08

[백준] 1157: 단어 공부

문제 https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net 문제 풀이 알고리즘은 C로만 많이 풀었어서 모르고 있던 사실이 있다. Java에는 소문자, 대문자로 전부 변환해주는 메소드가 있다는 점이다. 이를 활용해서 문제를 풀면 아스키 코드로 대문자, 소문자를 따로 따지지 않아도 돼서 편리하다. 1. 입력받은 문자열을 전부 대문자로 바꿔 저장한다. 2. 전부 대문자로 변환된 문자열로 문자열 배열을 만든다. 3. 각 알파벳이 몇 번 나오는지 세기 위한 알파벳 개수(26개)의 크기를 가진..

Algorithm/BaekJoon 2023.02.08

[DB Programming] MyBatis, MyBatis 설정, SqlSessionFactory, SqlSession, Mapper XML, Mapper interface

MyBatis Data Mappers 객체와 데이터베이스 사이에 데이터를 이동시킴 (moves data between objects and a database) 객체와 데이터베이스가 서로 독립적이고 mapper에 대해서도 독립적 (while keeping them independent of each other and the mapper itself) 특징 SQL에 대한 고수준 mapping을 지원하는 영속성 프레임워크 (persistence framework) JDBC API를 이용하는 코드들을 생략 가능 (구현 불필요) SQL 질의에 대한 파라미터 설정 및 결과 처리 수행 XML과 annotation을 이용한 mapping 설정 방법 지원 Java의 기본 타입 값(primitive-type value)..

[DB Programming] Transaction 처리, Database Connection Pool

트랜잭션 처리 트랜잭션이란? 데이터 처리를 위한 논리적인 작업 단위 일반적으로 여러 개의 DML문과 질의문들로 구성될 수 있음 All or Nothing 방식으로 처리 오류가 없을 경우 실행이 완료(commit) 되고 그 결과가 데이터베이스에 영속적으로 유지됨 오류 발생 시 모든 DML문들의 실행 결과가 취소됨 ACID 속성을 만족해야 함 (사실 ACID 속성 만족은 DBMS가 해주기 때문에 트랜잭션만 잘 구성하면 된다) Atomicity (원자성) Consistency (일관성) Isolation (고립성) : 같은 데이터에 동시 접속하고 변경하면 안 되는 것을 말하는데 만약 1000개의 DML문으로 구성된 트랜잭션이라면 완벽하게 따로 실행시킬 수는 없다. 동시성을 위해 같이 실행되지만 결과는 서로 간..

[DB Programming] JSP Standard Tag Library (JSTL)

JSTL 개요 Custom Tag JSP에서 반복적으로 사용되는 프로그램 로직을 캡슐화하여 태그 형태로 정의한 것 JSP 페이지에서 scriptlet (java code)을 대체하기 위해 사용 - JSP에서 바로 Java 코드를 작성하는 건 안 좋음 JSP Standard Tag Library (JSTL) JSP와 함께 Java EE Platform에 포함됨 JSP 개발에서 공통적으로 사용되는 유용한 custom tag들을 정의 MVC 구조에서 collection과 같이 여러 원소들을 포함하는 데이터를 처리할 때 특히 유용 Expression Language (EL)와 함께 사용 설치 Maven repository에서 JSTL API 및 구현체 library를 직접 download jstl-1.2.jar..

[DB Programming] DAO & DTO Patterns - Persistence/Service(Business)/Presentation Layer

3-tier Application Architecture Client -> Presentation Layer -> Business/Service Layer -> Persistence Layer(DAO) controller는 사이사이에 껴있음 바로 밑 Layer만 이용 밑 Layer를 호출 시 어떻게 구현됐는지 알 필요 없음 manager class가 DAO, JSP 사이에 껴있음 DAO Pattern 개요 영속성 계층(Persistence Layer) 애플리케이션의 객체 및 데이터를 영속적으로 저장 관리하는 계층. 프로그램이 중단되어도 유지되며 프로그램 실행 시 다시 사용 가능 Database, File System, LDAP Server 등 데이터 저장소(Data Source) 비즈니스 계층에서 영속성..

[DB Programming] JDBC Programming - JDBC, JDBC Driver/API, Statement, ResultSet

JDBC (Java Database Connectivity) Java application에서 DBMS를 연동하기 위한 표준 API JDBC API를 이용함으로써 DBMS의 종류에 상관없이 동일한 방법으로 데이터베이스 접속 및 질의 실행 가능. 한 번 작성한 코드를 나중에 수정하는 게 어렵기 때문에 코드 수정 없이 Driver만 바꿔주면 됨. DBMS 접속 및 이용을 위한 interface(대부분)와 class들을 포함 DBMS vendor에서 제공하는 JDBC Driver를 통해 구현됨 Java Application JDBC API Oracle용/MS SQL Server용/MySQL용 JDBC Driver Oracle/MS SQL/MySQL DB JDBC Driver 종류 중 Type 4: Native..

[Java] 자바 입력 - BufferedReader 개념, 사용법

BufferedReader란? BufferedReader는 Scanner와 유사하다. BufferedReader는 입력 값이 바로 전달되지 않고 버퍼에 모아서 한 번에 전송하므로 입력 효율이 좋다. 버퍼를 사용하지 않는 입력은 키보드의 입력이 키를 누르는 즉시 프로그램으로 바로 전달된다. 버퍼를 사용하는 입력은 키보드의 입력이 있을 때마다 한 문자씩 버퍼로 전송한다. 버퍼에 차곡차곡 쌓이고 프로그램에 바로 전달되지 않는다. 버퍼가 가득 차거나, 개행 문자가 나타나면 버퍼의 내용을 한 번에 프로그램으로 전달한다. 키보드 입출력은 생각보다 시간이 많이 걸리는 작업이다. 버퍼링 없이 키보드의 입력될 때마다 입력된 문자 하나씩 바로 전달하는 것보다 중간 단계로 버퍼를 두고 입력 값들을 한 번에 모아 전달하는 게..

Algorithm/Java 2022.11.02