본문 바로가기

분류 전체보기74

[Go] 고루틴(Goroutine) 알고쓰기(2) - Block 처리방식, Channel 동시성과 병행성의 차이 그리고 고루틴의 간단한 사용법을 이전 포스팅에 남겼다. 이 포스팅은 조금 더 고루틴을 맛깔나게 쓰기위한 Channel에 대해 알아보려 한다. ( 고루틴의 간단한 사용법은 이전 포스팅 글에서 확인하시길 바란다. ) Channel이란? Channel은 Golang의 고루틴 간의 통신을 위한 수단. Channel은 Thread Safe한 Queue이다. Channel은 Golang에서 기본 자료형으로 주어지며 일급 객체의 역할을 한다. Channel의 표기법은 chan [자료형]이며 주고 받는 역할을 하는 양방향 channel, 주기만 또는 받기만 하는 단방향 channel을 지정할 수 있다. Channel은 레퍼런스 자료형이다. Channel은 Block 형태의 처리방식을 가진다. B.. 2021. 9. 17.
[Algorithm]Programmers_12952_N-Queen_Go 문제 링크 N-Queen : 링크 문제 풀이 Well Known 이군요.. 체스에서 퀸의 움직임을 알아둔다. 가로 세로 대각선 완전 만능 row, col, diagnol 방향 모두 가능하다면 하나씩 체크하면서 넘어간다. 끝까지 도착했다면 모든 조건에 만족했다는 뜻! answer += 1 package q12952 var board [][]bool var colCheck []bool func initBoard(n int) { board = make([][]bool, n) colCheck = make([]bool, n) for i := 0; i < len(board); i++ { board[i] = make([]bool, n) } } var answer int func goBackTracking(size, .. 2021. 9. 16.
[Algorithm]Programmers_43238_입국심사_Go 문제 링크 입국심사 : 링크 문제 풀이 입국심사를 진행하는 심사원들을 작업이 걸리는 시간을 기준으로 오름차순으로 정렬한다. 시간을 기준으로 이분탐색을 진행한다. 코드 package q43238 import ( "fmt" "sort" ) func binarySearch(n int, times []int) int64 { sort.Ints(times) left := 1 right := n * times[len(times)-1] answer := 0 for left < right { middle := ((left + right) / 2) tmp := 0 for _, val := range times { tmp += middle / val } if tmp < n { left = middle + 1 } else i.. 2021. 9. 15.
[Algorithm]Programmers_17678_셔틀버스_Java 문제링크 셔틀버스 : 링크 문제 풀이 생각 다 필요없고 마지막 셔틀버스가 사람으로 꽉 찼는지 아닌지만 체크하면 될듯허다. 풀이 방법 String Type의 시간 HH:MM을 Int Type으로 전환 시킬 함수와 그 반대의 함수를 생성 크루들이 셔틀을 기다리기 시작하는 시간을 toMinute함수를 통해 Int로 전환하여 그 값을 오름차순으로 sorting 앞의 셔틀부터 기준에 맞게 크루를 태워나간다. 마지막 셔틀버스에 사람이 가득 찬다면 : 콘은 마지막에 탄 사람보다 1분 일찍 나와야한다. 빈자리가 있다면 : 마지막 셔틀버스가 출발하는 시간에 나가야 한다. 4의 결과를 toTime을 통해 String으로 전환하여 return한다. 코드 import java.util.ArrayList; import java.. 2021. 9. 14.
[블록체인] 디지털 서명(Digital Signature) 서론 블록체인을 공부하면서 알게된 보안 방법인 디지털 서명에 대해 알아 보고자 한다. 생각보다 어려운 내용은 아니었다. 그렇지만 정확히 이해하지 않는다면 헷갈리기 쉬운 내용이며 당장 이해한다고 해도 바탕을 꽉 잡아두지 않는다면 뒤죽박죽 기억할 느낌이다. 익혀두면 요긴하게 사용할 수 있을 듯 하다. 이 후에 설명할 디지털 서명은 주로 블록체인에서 사용할 방식들 이다. 디지털 서명 디지털 데이터의 진위성과 무결성을 검증하는 암호화 방법. 블록체인에서는 트랜잭션의 진위성과 무결성을 검증하기 위해 사용한다. 공개키 암호화 방식 PKC 하나의 공개키와 하나의 개인키를 통해 암호화하는 방식. 데이터를 암호화할 수 있고 디지털 서명에도 이용할 수 있다. 공개키를 통해 데이터를 암호화 하고 개인키를 통해 암호화 된 데.. 2021. 9. 10.
[Algorithm]Programmers_17683_방금그곡_Java 문제 링크 방금그곡 : 링크 문제 풀이 음악 하나 하나를 저장할 class 객체를 만든다. #이 붙은(갯수는 하나지만 length가 2인) 악보를 겹치지 않는 다른 문자로 변환한다. 답이 여러개 일 경우를 대비하여 running time을 계산한다. array list에 값을 넣기 때문에 running time이 같다면 먼저 저장된 음악이 답임을 생각한다. 코드 package Programmers.LV2; import java.util.ArrayList; public class Q17683 { static class Music{ int runningTime; String name; String infos; public Music(int runningTime, String name, String infos.. 2021. 9. 3.