전체 글 24

[Go / 백준 2884번] 알람 시계

문제상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다.상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다.이런 상근이를 불쌍하게 보던 창영이는 자신이 사용하는 방법을 추천해 주었다.바로 "45분 일찍 알람 설정하기"이다.이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다.현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을 사용한다면, 이를 언제로 고쳐야 하는..

STUDY/Go Lang 2024.09.14

[Go / 백준 11382번] 꼬마 정민

문제꼬마 정민이는 이제 A + B 정도는 쉽게 계산할 수 있다. 이제 A + B + C를 계산할 차례이다!입력첫 번째 줄에 A, B, C (1 ≤ A, B, C ≤ 1012)이 공백을 사이에 두고 주어진다.출력A+B+C의 값을 출력한다.예제 입력 1 복사77 77 7777예제 출력 1 복사7931 작성코드package mainimport ( "bufio" "fmt" "os")func main() { var a, b, c int reader := bufio.NewReader(os.Stdin) writer := bufio.NewWriter(os.Stdout) defer writer.Flush() fmt.Fscanf(reader, "%d %d %d", &a, &b, &c) fmt.Println(a + b + ..

STUDY/Go Lang 2024.09.11

[Go / 백준 2588번] 곱셈

문제(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.입력첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.출력첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.예제 입력 1 복사472385예제 출력 1 복사236037761416181720 작성코드package mainimport ( "bufio" "fmt" "os")func main() { var a, b int reader := bufio.NewReader(os.Stdin) writer ..

STUDY/Go Lang 2024.09.10

[Go / 백준 18108번] 1998년생인 내가 태국에서는 2541년생?!

문제ICPC Bangkok Regional에 참가하기 위해 수완나품 국제공항에 막 도착한 팀 레드시프트 일행은 눈을 믿을 수 없었다. 공항의 대형 스크린에 올해가 2562년이라고 적혀 있던 것이었다.불교 국가인 태국은 불멸기원(佛滅紀元), 즉 석가모니가 열반한 해를 기준으로 연도를 세는 불기를 사용한다. 반면, 우리나라는 서기 연도를 사용하고 있다. 불기 연도가 주어질 때 이를 서기 연도로 바꿔 주는 프로그램을 작성하시오.입력서기 연도를 알아보고 싶은 불기 연도 y가 주어진다. (1000 ≤ y ≤ 3000)출력불기 연도를 서기 연도로 변환한 결과를 출력한다.예제 입력 1 복사2541예제 출력 1 복사1998  참고사항불기연도에서 543을 빼주면 서기 연도가 된다. 작성코드package mainimpor..

STUDY/Go Lang 2024.09.09

[3단계] Go 프로그래밍에 유용한 기법 익히기 (2)

이 글은 골든래빗 《Tucker 의 Go 언어프로그래밍》의 3단계 써머리입니다. Todo 리스트 웹사이트 구현 순서 서비스 정의 Todo 구조체 생성 RESTful API에 맞춰서 핸들러 생성 화면 구성 (프론트) 웹 브라우저 동작 확인 패키지 사용 `$ go get github.com/urfave/negroni` 로그 / panic 복구 / 파일서버 기능 지원 `$ go get github.com/unrolled/render` 웹 서버 응답을 구현하는데 유용한 패키지 구조체 정의 type Todo struct { ID int `json:"id,omitempty"` Name string `json:"name"` Completed bool `json:"completed,omitempty"` } RESTfu..

STUDY/Go Lang 2023.11.13

[3단계] Go 프로그래밍에 유용한 기법 익히기 (1)

이 글은 골든래빗 《Tucker 의 Go 언어프로그래밍》의 3단계 써머리입니다. 목차 객체지향 설계 원칙 SOLID 테스트와 벤치마크 Go 언어로 만드는 웹 서버 RESTful API 서버 만들기 객체지향 설계 5가지 원칙 SOLID 설계 → 프로그램 코드를 이루는 각 모듈 간 의존 관계 정의 나쁜 설계 → 상호 결합도가 매우 높고 응집도가 낮다 경직성 (Rigidity): 모듈간의 결합도가 높아서 코드 변경하기 어려운 구조 부서지기 쉬움 (Fragility): 한 부분 수정 후 다른부분까지 망가지는 경우 부동성 (Immobility): 모듈간 결합도가 높아서 옮길 수 없는 경우(코드 재사용률 감소) 좋은 설계 → 상호 결합도가 낮고 응집도가 높다 객체지향 설계 5가지 원칙 SOLID 단일 책임 원칙: ..

STUDY/Go Lang 2023.11.05

[Go Lang] 고급 기법으로 Go 레벨업하기 (2)

이 글은 골든래빗 《Tucker 의 Go 언어프로그래밍》의 2단계 써머리입니다. 목차 에러 핸들링 고루틴과 동시성 프로그래밍 채널과 컨텍스트 단어 검색 프로그램 에러 핸들링 에러 생성하기 import "fmt" fmt.Errorf("에러 메시지") // 에러 메시지 생성 ===== import "errors" errors.New("에러 메시지") // 에러 생성 에러 타입 type error interface { Error() string } 패닉 panic() 프로그램을 바로 종료시켜서 문제 발생 시점 및 발생한 경로 파악 recover() 프로그램 복구 (제한적 사용 필요) 데이터가 비정상적으로 저장된 상태인 경우가 있음 (다른 오류 발생하지 않도록 사용) 고루틴과 동시성 프로그래밍 고루틴 (Go R..

STUDY/Go Lang 2023.10.29