본문 바로가기

IT 정보 공유방

순열을 활용한 차이 최대값 구하기_BOJ_10819 사실 이 문제를 이해하기 위해서 좀 오래걸렸다. 주어진 배열을 먼저 오름차순으로 정렬한 뒤 다음 순열 공식을 이용해서 이 중 반복문을 거치고 이를 통해 문제에서 요구하는 최대 차의 값을 구하도록 만드는 것이다. 코드 부터 확인해보자 public static void main(String[] args) {// TODO Auto-generated method stubsc = new Scanner(System.in); int N = sc.nextInt();int[] A = new int[N]; for (int i = 0; i < N; i++)A[i] = sc.nextInt(); // 배열 안에 넣기 Arrays.sort(A); // 오름 차순 정리 int max = 0;do {int tmp = calculat.. 더보기
BOJ_1476_날짜계산 문의 package algorithm; import java.util.Scanner; public class 날짜계산_1476 { private static Scanner scan; public static void main(String[] args) {// TODO Auto-generated method stub/* * E , M , S --> 날짜 1 더보기
비트마스크 정리 비트 마스크란? 비트 연산을 통해서 부분 집합을 표현하는 용도로 사용 두 수 A,B를 비트 연산할 경우에는 가장 뒤의 자리부터 하나씩 연산을 수행하면 됩니다.예를 들어 A= 27 , B=83일 경우,A = 11011(2) B = 1010011(2) 여기서 A & B를 계산하면 뒤의 자리부터 맞춰서 계산해야 하므로 0011011(2) & 1010011(2)ㅡㅡㅡㅡㅡㅡㅡㅡ 이렇게 연산 되어서 동일하게 1이 있으면 1로 반환되고 0,1 로 비교될 경우는 0으로 반환된다. 그래서 값은 19가 나온다. 이렇게 뒤의 자리부터 맞춰서 계산해야 한다. 비트 연산 Shfit Left ( > B ( A를 오른쪽으로 B 비트만큼 민다. ) 1 >> 0 : 1 1 >> 1 : 0 10 >> 1 : 1010(2) --> 010.. 더보기
회문 작성 알고리즘 회문 작성 알고리즘이란? 한 문장을 앞에서부터 읽은 것이나, 뒤에서부터 읽은 것이나 같은 문장 예시 : abcdedcba 문제 : 문자열로 들어오는 str 뒤에 0 이상의 값을 추가하여 회문을 생성하고자 한다.생성할 수 있는 가장 짧은 회문의 길이를 구하시오. 아이디어 짜기 1. 구하는 값은 str의 총 길이가 될 것이며, str 뒤에 0 이상의 값을 추가하여 회문을 만드는 것이기 때문에리턴되는 회문의 최단 길이는 str의 길이가 될 것입니다.따라서 구하려는 값의 초기 값은 str의 길이로 잡고 시작하면 됩니다. 2. 비교할 것은 문자열의 처음 위치 값과 그 다음 위치 값을 비교합니다. 3. 다른 값이 나올 경우 반복문을 끝내고 회문이 아니기 떄문에 str 문자열 뒤에 값을 추가합니다. 코드는 다음과 같.. 더보기
전체 탐색 알고리즘 소개 전체 탐색 알고리즘이란? 모든 패턴을 조사하거나 그러한 것을 필요로 하는 문제 예시 친구가 i 명 있습니다. 각 i번째의 친구는 first[i], second[i] 이렇게 두 가지 흥미로운 주제를 가지고 있습니다.각 친구들은 흥미로운 주제가 같아야만 이야기를 합니다.친구들이 가장 많이 즐기기 위해서는 어떻게 해야 하는가? 이럴 경우 방법은 두 가지가 있습니다.첫 번째로는 모든 i번째의 친구들의 취미를 하나씩 비교해서 패턴을 찾고 최대로 흥미를 가지게 만드는 것입니다. int ans = 0;for(int i=0;i 취미가 가장 많이 겹치는 것임ans = Math.max(ans,f_cnt);ans = Math.max(ans,s_cnt);} return ans; 이 중 for문을 사용하지 않고 연관배열을 사용.. 더보기
시뮬레이션 문제 시뮬레이션 문제란? 알고리즘을 풀 때 모든 과정이 제시되어 그 과정을 거쳐 나온 결과를 추론하는 문제입니다.시뮬레이션은 설명해 준 대로 쭉 이행하면 됩니다. 코드에서 간단하게 설명드리도록 하겠습니다. 문제( i 번째 기준 )병의 용량 : capacities[i];주스의 양 : bottles[i];주스를 붓는 양 : toId[i];주스를 붓고 남은 양 : fromId[i]; 문제는 빈 병에다가 주스를 재분배해서 담으려하는데 0부터 M-1번째까지 M회 조작합니다.i 번째 조작에 있어서는 fromId[i]부터 toId[i]에 주스를 담는 것을 의미합니다.병 fromId[i]가 비어 있거나 병 toId[i]가 꽉 차 있다면 더이상 주스를 분배할 수 없습니다. 이러한 문제는 시키는 대로 순서대로 하면 되는데, 우.. 더보기
S3 사용법 오늘은 S3 활용법에 대해서 설명드리도록 하겠습니다. S3란? Simple Storage Service 로 파일 서버를 의미합니다. 장점1. 사용자 폭등 시에도 무리 없이 데이터를 저장할 수 있다. (최대 5TB)2. 저장할 수 있는 파일의 수가 제한되지 않는다.3. Http , BitTorrent 프로토콜을 지원한다.4. REST , SOAP 인터페이스를 사용한다.5. RSS (Reduced Redundancy) 썸네일과 같은 이미지 사본을 저장하여 싸게 활용할 수 있다. How to use S3? 1. aws에서 S3에 접속하여 버킷을 만든다. 2. 버킷을 만드는 데 모든 과정을 기본 설정으로 한 뒤 만든다. (물론 설정 부분에서 기본 설정으로 안하셔도 되는데 나중에 권한도 바꿀 수 있기 때문에 우선.. 더보기
module 관리 오늘은 Module 관리에 대해서 알려드리겠습니다. module은 자신이 코딩한 파일을 외부에 두어서 하나의 라이브러리 처럼 관리하는 것을 의미합니다. 가져 오는 부분에서는 es5 버전에선 require("상대경로") ; 이며 es6에서는 import ' export로 보낸 이름 ' from ' 상대경로 ' ; 이렇게 됩니다. (require은 es6에서도 사용됩니다!) 그렇다면 간단한 계산기 코드를 먼저 확인해보겠습니다. [ Calculator.js ] var calculator = {}; calculator.add = function (a, b) { return a + b; }; calculator.minus = function (a, b) { return a - b; }; calculator.div.. 더보기

반응형