전체 글
BOJ 1475 방 번호
문제 다솜이는 은진이의 옆집에 새로 이사왔다. 다솜이는 자기 방 번호를 예쁜 플라스틱 숫자로 문에 붙이려고 한다. 다솜이의 옆집에서는 플라스틱 숫자를 한 세트로 판다. 한 세트에는 0번부터 9번까지 숫자가 하나씩 들어있다. 다솜이의 방 번호가 주어졌을 때, 필요한 세트의 개수의 최솟값을 출력하시오. (6은 9를 뒤집어서 이용할 수 있고, 9는 6을 뒤집어서 이용할 수 있다.) 입력 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 필요한 세트의 개수를 출력한다. 코드 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) th..
2장 개략적인 규모 측정
시스템 용량이나 성능 요구사항을 개략적으로 추정하기 개략적 규모 추정을 효과적으로 해 내려면 규모 확장성을 표현하는데 필요한 기본기에 능숙해야 한다. 특히 2의 제곱수나 응답지연(latency) 값, 그리고 가용성에 관계된 수치들을 기본적으로 잘 이해해야 한다. 2의 제곱수 데이터 볼륨의 단위를 2의 제곱수로 표현하면 어떻게 되는지 알아야 정확한 데이터의 양을 측정할 수 있다. 최소단위는 1바이트, 8비트로 구성 모든 프로그래머가 알아야 하는 응답지연 값 구글의 제프 딘은 2010년 통상적인 컴퓨터에서 구현된 연산들의 응답지연 값을 공개하였다. 한 구글 엔지니어는 이 수치를 쉽게 시각화하는 도구를 개발하였다. 이하 그림은 이 도구를 사용해 2020년 기준으로 시각화한 수치이다. 위 수치로 알 수 있는 사..
스프링 핵심 원리 - 기본편 [객체 지향 설계와 스프링]
스프링이란 스프링은 자바 언어 기반의 프레임워크 자바 언어의 가장 큰 특징 - 객체 지향 언어 스프링은 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크 다형성을 활용하기 위한 프레임워크 좋은 객체 지향 프로그래밍이란? 객체 지향 특징 추상화 캡슐화 상속 다형성 다형성의 본질 인터페이스를 구현한 객체 인스턴스를 실행 시점에 유연하게 변경할 수 있다. 다형성의 본질을 이해하려면 협력이라는 객체사이의 관계에서 시작해야함 클라이언트를 변경하지 않고, 서버의 구현 기능을 유연하게 변경할 수 있다. 좋은 객체 지향 설계의 5가지 원칙(SOLID) 클린코드로 유명한 로버트 마틴이 좋은 객체 지향 설계의 5가지 원칙을 정리 SRP: 단일 책임 원칙(single responsibility princip..
BOJ 2577 숫자의 개수
문제 세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오. 예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다. 입력 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. 출력 첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각..
[바킹독의 실전 알고리즘 강의] 배열
배열 정리 2021.02.25 - [Computer Science/DataStructure] - Array (배열) 배열 문제 길이 N의 정수형 배열 arr에서 합이 100인 서로 다른 위치의 두 원소가 존재하면 1을 반환, 존재하지 않으면 0을 반환하는 함수 func2 (arr[],int N)를 작성하여라. arr의 각 수는 0이상 100이하, N은 1000이하이다. O(N)으로 풀어보기 0부터 100까지 담을 수 있는 배열을 선언하고 arr를 순회하면서 현재 idx와 더해 100을 만들 수 있는 수가 있는지 찾기 int func2(int arr[], int n) { int countArr[] = new int[101]; for(int idx = 0; idx < n; idx++) { if(countAr..
BOJ 10808 알파벳 갯수
https://www.acmicpc.net/problem/10808 10808번: 알파벳 개수 단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다. www.acmicpc.net import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int[] arr = new int[26]; String s = br.readLine(); for (int i = 0; i < s.length(); i+..