분류 전체보기 188

백준 - 10818번

https://www.acmicpc.net/problem/10818 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 설명 : N개의 정수를 입력받고, 입력받은 정수의 최대, 최소 값을 구해라 문제를 확인해보면 우선 첫 줄에는 정수 N개를 입력받아야 하고, 그 다음 자신이 입력하고자 하는 정수를 아래와 같이 입력해야 한다. 내 생각 : 항상 Scanner를 사용해서 문제를 풀다 BufferedReader를 알게 되고 후자의 방식을 사용하게 되었다. 문제를 확인하고 입력과 ..

문자열 나누기 - StringTokenizer

알고리즘 문제를 풀다 궁금한 것이 생겨 이렇게 정리해놓는다. 우리는 여러 방법을 이용해 문자열을 나눌 수 있다. 배열을 이용하면 불필요한 메모리를 사용하게 되어 성능에 이슈가 생길 수 있다. 외에도 split 존재 그래서 문자열을 나누기 위한 방법으로 StringTokenizer을 사용하게 되는데, 이 클래스를 이용해 문자열을 나누게 되면 나누어진 문자열을 토큰이라고 부른다. 참고 : https://docs.oracle.com/javase/7/docs/api/java/util/StringTokenizer.html StringTokenizer (Java Platform SE 7 ) Constructs a string tokenizer for the specified string. All characters..

Language/Java 2022.08.03

백준 2588번 - 곱셈 (Scanner와 BufferedReader)

https://www.acmicpc.net/problem/2588 2588번: 곱셈 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. www.acmicpc.net 문제 (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다. (1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다. 출력 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. 내 생각 : 최근 단계별 백준 문제를 풀기 시작하면서 궁금한 부분들..

9장 소프트웨어 개발 보안 구축 - (1) 소프트웨어 개발 보안 설계

SW 개발 보안 SW 개발 보안의 3대 요소는 기무가(기밀성, 무결성, 가용성)이다. 기밀성(Confidentiality)은 인가되지 않은 사용자, 시스템에 대해선 정보 공개 및 노출을 차단하는 특성 무결성(Integrity) : 정당한 방법을 따르지 않으면 데이터가 변경될 수 없음 가용성(Availability) : 권한을 가진 사용자, 시스템은 서비스를 지속해서 사용할 수 있음. SW 개발 보안 용어 (자위취위) 자산(Asset) - 가치를 부여한 대상 위협(Thread) - 자산에 악영향을 끼칠 수 있는 사건, 행위 취약점(Vulnerability) - 위협이 발생하기 위한 사전 조건 위험(Risk) - 위협이 취약점을 이용해 조직의 자산 손실 피해를 가져올 가능성 SW 개발 보안을 위한 공격기법의..

8장 서버 프로그램 구현 - (2) 공통 모듈 구현

응집도와 결합도(Cohesion and Coupling) 응집도는 모듈의 독립성을 나타내는 정도로, 모듈 내부 구성요소 간 연관 정도를 말한다. 하나의 모듈이 하나의 기능을 수행할수록 응집도가 높다. (응집도는 높을수록 좋다) 우논시절통순기(우연적, 논리적, 시간적, 절차적, 통신적, 순차적, 기능적)--낮은 순서에서 높은 순서로 나열 - 우연적 응집도(Coincidental) : 모듈 내부의 각 구성요소가 연관이 없음 - 논리적 응집도(Logical) : 유사한 성격, 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우 - 시간적(Temporal) : 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리해야할 경우 - 절차적(Procedual) : 모듈이 다수의 관련 기능을 가질 때 구성요..

8장 서버 프로그램 구현 - (1) 개발환경 구축

개발환경 구축 1. 개발 도구의 분류 - 빌드 도구 : 작성한 코드의 빌드 및 배포를 수행 ex) Ant, Maven, Gradle 등 - 구현 도구 : 개발시 가장 많이 사용되는 도구로 코드 작성 및 디버깅, 수정 등 의 작업을 지원 ex) Eclipse, IntelliJ 등 - 테스트 도구 : 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구 ex) xUnit, PMD, Findbugs, Sonar 등 - 형상 관리 도구 : 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구 ex) Git, CVS, Subversion 등 2. 개발 환경 - 웹 서버 : HTTP를 이용한 요청/응답 처리, 웹 상의 정적 콘텐츠(CSS, JS, Image)를 처리 ex) Apache, IIS, N..

7장 SQL 응용 - (1) 데이터베이스 기본

트랜잭션 트랜잭션은 인가받지 않은 사용자로부터 데이터를 보장하기 위한 DBMS가 가져야하는 특성이자, 작업의 기본 단위로 4개의 특성을 갖고 있다 (원일고영=원자성, 일관성, 격리성(고립성), 영속성) 원자성(Atomicity) : 연산 전체가 모두 정상 실행 or 모두 취소 // Commit, Rollback, 회복성 보장 일관성(Consistency) : 고정요소는 트랜잭션 실행 전과 후의 상태가 같아야 함 // 무결성 제약조건, 동시성 제어 격리성/고립성(Isolation) : 동시에 실행되는 트랜잭션들이 서로 영향을 미치면 안 됌 // -- 영속성(Durability) : 성공이 완료된 트랜잭션의 결과는 영속적으로 DB에 저장되어야 함. 트랜잭션을 제어하는 언어를 TCL(Transaction Co..

6장 프로그래밍 언어 활용 - (2) 언어 특성 활용하기

1. 프로그래밍 언어의 언어별 특징 1) 개발의 편의성에 따른 분류 저급 언어 vs 고급 언어 저급 언어는 기계가 이해할 수 있도록 만들어진 언어로 기계어, 어셈블리어가 여기에 포함된다. 고급 언어는 개발자가 소스 코드를 작성할 때 쉽게 이해할 수 있도록 작성된 언어로 C, C++, Java 등이 있다. 2) 실행하는 방식에 따른 분류 명령형 언어 : 컴퓨터에 저장된 명령어들이 순차적으로 실행되는 방식으로, 절하쳥 언어라고도 불린다 (ex_ FORTRAN, COBOL, PASCAL, C) 객체 지향 언어 : 객체 간의 메시지 통신을 이용해 프로그래밍하는 방식 (ex_ JAVA, C++) 함수형 언어 : 수학의 함수와 같은 수학적 수식으로 프로그램을 구성해 호출하는 방식 (ex_ LISP) 논리형 언어 :..

5장 인터페이스 구현 - (2) 인터페이스 기능 구현

인터페이스 기능 구현 기술 1) JSON = '속성-값 쌍' 또는 '키-값 쌍'으로 이루어진 데이터 오브젝트를 전달하기 위한 개방형 표준 포맷으로 AJAX에서 많이 사용되고 XML을 대체하는 주요 데이터 포멧이다. 사람이 읽고 쓰기 용이하며 기계가 분석하고 생성하기 용이하다. 2) XML = HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어로 사용자가 직접 문서의 태그를 정의할 수 있으며, 다른 사용자가 정의한 태그를 사용할 수 있다.(트리구조를 갖는다.) 3) AJAX = JS(Java Script)를 사용해 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술로, 브라우저가 가지고 있는 XMLHttpRequest ..

4장 통합 구현 - (3) 내외부 연계 모듈 구현

연계 모듈 구현 환경 구성 및 개발 1) EAI(Enterpriser Application Integration) 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간 정보를 전달, 연계, 통합이 가능하도록 해주는 솔루션으로 EAI를 사용함으로써 각 비즈니스 간 통합 및 연계성을 증대시켜 효율성의 증대 및 확장성을 높여준다. 1-2) EAI 구축 유형 - 포인트 투 포인트(Point-to-Point) : 가장 기초적인 애플리케이션 통합 방법으로 1:1 단순 통합방법 - 허브 앤 스포크(hub & Spoke) : 허브 시스템을 통해 데이터를 전송하는 중앙 집중식 방식 - 메시지 버스 (Message Bus) : 애플리케이션 사이 미들웨어인 버스를 두어 연계하는 미들웨어 통합 방식으로 뛰어난 확장성과 대용..