목록분류 전체보기 (89)
빠에야는 개발중
행렬의 곱셈은, 곱하려는 두 행렬의 어떤 행과 열을 기준으로, 좌측의 행렬은 해당되는 행, 우측의 행렬은 해당되는 열을 순서대로 곱한 값을 더한 값이 들어갑니다. 행렬을 곱하기 위해선 좌측 행렬의 열의 개수와 우측 행렬의 행의 개수가 같아야 합니다. 곱할 수 있는 두 행렬 A,B가 주어질 때, 행렬을 곱한 값을 출력하는 productMatrix 함수를 완성해 보세요. 행렬의 곱셈을 이론적으로는 알고 있었는데 코드로 구현하려고 하니 어딘가 부족한 부분이 느껴졌다.2차원 행렬에서 생각이 굳어 진행을 못하고 있다가 다른 사람이 짠 코드를 보니 3차원 행렬로 해결했더라.틀을 깨지 못한 것 같아서 아쉬웠다. 손으로 직접 테스트 케이스를 작성해봤으면 빨리 눈치챘을지도 모른다. 자기과신... 1234567891011..
reverseInt 메소드는 int형 n을 매개변수로 입력받습니다. n에 나타나는 숫자를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. n은 양의 정수입니다. int형 정수의 각 자릿수를 쪼개는 것이 포인트라고 할 수 있다.각각의 자릿수를 배열에 담아 내림차순 정렬하고, 다시 정수로 만들어주었다.각 자릿수를 10 지수승 단위로 받으려고 했다가 꼬여서 단순히 일의 자리의 수를 가져오고 10씩 나누는 방법을 사용했다.이 방법이 바로 생각나지 않아서 꽤 고민을 했다. 자괴감 타임...123456789101112131415161718192021222324252627282930313233343536373839import java.util.Ar..
자연수로 이루어진 길이가 같은 수열 A,B가 있습니다. 최솟값 만들기는 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱한 값을 누적하여 더합니다. 이러한 과정을 수열의 길이만큼 반복하여 최종적으로 누적된 값이 최소가 되도록 만드는 것이 목표입니다.예를 들어 A = [1, 2] , B = [3, 4] 라면A에서 1, B에서 4를 뽑아 곱하여 더합니다.A에서 2, B에서 3을 뽑아 곱하여 더합니다.수열의 길이만큼 반복하여 최솟값 10을 얻을 수 있으며, 이 10이 최솟값이 됩니다. 수열 A,B가 주어질 때, 최솟값을 반환해주는 getMinSum 함수를 완성하세요. 간단하게 두 배열을 각각 오름차순, 내림차순으로 정렬하여 차례대로 곱해서 더하면 된다. 쉽게 해결했다.1234567891011121314151..
자바 8에서 추가된 큰 기능들 중 하나가 스트림 api이다. 스트림을 사용하면 컬렉션의 요소들의 연산을 쉽게 처리할 수 있다는 큰 장점이 있다. 스트림의 특징은 다음과 같다. 1. 스트림은 요소들을 보관하지 않는다. 필요할 때마다 스트림을 생성한다.2. 스트림은 원본 컬렉션을 변경하지 않는다. 새로운 스트림을 반환할 뿐이다.3. 스트림은 지연(lazy) 처리된다. 예를 들어 정렬을 수행할 때 도중에 결과값을 반환하게 된다면 전체 연산을 수행하지 않는다. 스트림은 또한 간단하게 병렬 처리를 구현할 수 있다. parallelStream()으로 스트림을 생성하면 스트림 라이브러리가 병렬로 연산을 수행한다.12long count = words.stream().filter(w -> w.length() > 12)...
numberOfPrime 메소드는 정수 n을 매개변수로 입력받습니다.1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하도록 numberOfPrime 메소드를 만들어 보세요.소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.)10을 입력받았다면, 1부터 10 사이의 소수는 [2,3,5,7] 4개가 존재하므로 4를 반환 5를 입력받았다면, 1부터 5 사이의 소수는 [2,3,5] 3개가 존재하므로 3를 반환 이 문제는 1. 1부터 n까지 각각 약수가 존재하는지 검사2. 에라토스테네스의 체 이렇게 두가지 방법으로 풀 수 있다. 1번 방법은 모든 경우를 다 해보는 방법이고 2번 방법은 그나마 계산 수를 줄이는 방법이다. 그래서 2번을 선택했다.123456789101112131..
롬복은 스프링에서 사용되는 라이브러리로, 어노테이션을 기반으로 반복적이고 따분한 작업들을 대폭 줄여주어 편하게 개발할 수 있게 도와준다. 대표적으로 Getter와 Setter 등이 있다. 한번 사용해보자. maven dependency를 설정해주는 것 만으로도 적용할 수 있다.123456 org.projectlombok lombok 1.16.8 providedcs 이제 적용된 코드를 살펴보자. 롬복을 적용하기 전에는 아래와 같이 길던 코드가..1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787..
Oauth는 요즘 자주 보이는 인증 방식이다. 네이버, 페이스북 등의 계정 정보를 활용한 인증 서비스를 제공하는 곳을 많이 보았을 것이다. 그렇다면 이런 인증 방식은 어떻게, 왜 사용하게 된 것일까? 어떤 시스템에서 외부 시스템에 접근하기 위하여 사용자의 계정 정보(아이디, 비밀번호 등)을 사용하는 것은 보안상 좋지 않다. 따라서 사용자의 인증을 받아 토큰을 발급 받으면 그 토큰 만을 사용함으로써 사용자의 계정 정보는 불필요하게 되어 보안을 유지할 수 있는 것이다. 추가적으로 사용자의 권한까지 조절할 수 있도록하면 서비스적으로 더 좋을 것이다. 이것이 Oauth의 기본 개념이다. Oauth 1.0a Outh는 현재 2.0 버전을 달리고 있는데, 먼저 등장한 1.0a 버전에 대하여 알아보자.(1.0a 버전..
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬을 입력받는 sumMatrix 함수를 완성하여 행렬 덧셈의 결과를 반환해 주세요.예를 들어 2x2 행렬인 A = ((1, 2), (2, 3)), B = ((3, 4), (5, 6)) 가 주어지면, 같은 2x2 행렬인 ((4, 6), (7, 9))를 반환하면 됩니다.(어떠한 행렬에도 대응하는 함수를 완성해주세요.) 단순한 행렬의 덧셈 문제인데 처음에 정사각행렬만 생각했다가 틀려서 다시 풀다가 A.length가 높이값이라는 것을 알게 되었다. 이전에는 전체 요소 크기인줄 알고 있었는데 바로 잡아서 기분이 좋다. 123456789101112131415161718192021222324252627cla..
전자 서명 전자 서명이란 어떤 데이터가 정말 그 사람 것이 맞는지를 보장해주는 것이다. 이 때 비대칭키(공개키) 암호화 기술이 사용된다. 어떤 사람 A가 자신의 비밀키를 사용하여 원본 데이터의 해시값을 암호화(서명) 한다. 그 후에 믿을 수 있는 기관 B에 A의 공개키를 배포한다. 그러면 믿을 수 있는 기관 B는 자신의 비밀키로 A의 공개키를 서명하고, A의 주체 정보와 B의 공개키 등을 담아 인증서를 만들어 배포한다. 그리고 A는 이 인증서와 함께 원본 데이터와 원본 데이터의 해시값을 서명한 데이터를 합쳐 배포한다.(이를 “코드사인”이라고 한다.) 기관 B를 믿을 수 있는 사용자 C는 코드사인된 데이터를 받아 인증서 안에 들어있는 B의 공개키를 이용하여 A의 공개키를 얻어낸다. 이 A의 공개키로 서명된..
Maven dependency 설정으로 mysql과 mybatis를 등록하고 테스트 케이스를 작성했다. 프로퍼티의 실제 값들은 따로 파일에 빼놓았다.1234567891011 Colored by Color Scriptercs 1234567891011121314151617181920212223242526272829303132package com.aiolos.sloot; import java.sql.Connection; import javax.inject.Inject;import javax.sql.DataSource; import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.test.context.ContextConfigu..