전체 글 89

모각코 2회차

계획 상 2주차 내용은 인프런 HTTP 강좌 6개 강좌 수강 후 노션에 강의 내용 정리 였지만 일정 상 3주차 계획인 인프런 알고리즘 강좌 5개 강좌 수강 및 문제 풀이 후 github에 push 와 맞바꿔 진행함 Hash - 학급 회장 package inflearn.hash; import java.util.HashMap; import java.util.Map; import java.util.Scanner; public class P04\_01 { public static char solution(int n, String str) { Map map = new HashMap(); for (char c : str.toCharArray()) { map.put(c, map.getOrDefault(c, 0) + ..

etc./모각코 2022.07.13

모각코 1회차

알고리즘 문제 풀이 1. 배열 - 격자판 최대합 package inflearn.array; import java.util.Arrays; import java.util.Scanner; public class P02_09 { public static int solution(int n, int[][] arr) { int answer = Integer.MIN_VALUE; // 먼저 각 행, 열의 합에서 최대 값을 찾는다. int sumRow, sumCol; for (int i = 0; i < n; i++) { // 각 행, 열의 합계 초기화 sumRow = 0; sumCol = 0; // 한번에 행과 열의 합계를 같이 구한다. // 반복하며 어떤 변수가 변하느냐에 따라 행, 열 여부가 결정된다. for (int..

etc./모각코 2022.07.06

Gradle plugins vs dependencies

이동욱님의 스프링 부트와 AWS로 혼자 구현하는 웹 서비스 을 따라 진행하며 웹 앱을 개발하고 배포하는 전체 과정을 쭉 따라고 보고 싶었는데 첫 장부터 막혀버렸다..ㅋㅋ start.spring.io에서 완성된 프로젝트 파일을 다운로드하여 import 해 사용하는 방식으로 공부해왔어서 gradle 설정에서 문제가 발생하니 해결하기가 어려웠다. (동욱님께서도 책에서 이러한 문제 때문에 직접 gradle 설정 파일을 작성해보기를 권장하신다.) 그래서 이 참에 평소 gradle 설정 파일에서 궁금했던 정보를 찾아 정리해봤다. 워낙 기능과 정보가 방대해서 지금 내 수준에서 필요한 정도로만 정보를 찾고 정리했다. 다른 때와 달리 최대한 gradle 공식 문서만을 참고하려고 노력했다..! Gradle Gradle은 ..

2022 하계 모각코 사전 계획

1. 모각코 모여서 각자 코딩 의 줄임말로 온라인 혹은 오프라인으로 모여 코딩 및 학습을 진행하는 자기주도적 학습 소모임 2. 진행 계획 및 목표 7/6, 7/13, 7/20, 7/27, 8/3, 8/10 총 6회에 걸쳐 진행할 계획 7/6 19시 ~ 22시 (온라인) 인프런 알고리즘 강좌 5개 강좌 수강 및 문제 풀이 후 github에 push 7/13 19시 ~ 22시 (온라인) 인프런 HTTP 강좌 6개 강좌 수강 후 노션에 강의 내용 정리 7/20 19시 ~ 22시 (온라인) 인프런 알고리즘 강좌 5개 강좌 수강 및 문제 풀이 후 github에 push 7/27 19시 ~ 22시 (온라인) 인프런 알고리즘 강좌 5개 강좌 수강 및 문제 풀이 후 github에 push 8/3 19시 ~ 22시 (온..

etc./모각코 2022.06.23

[git] .gitignore 문법 및 규칙 정리

이번에 졸업 프로젝트를 진행하며 프로젝트를 깃헙으로 관리하게 되었는데 의도치 않게 .idea 등 개인 프로젝트 설정 파일까지 모두 깃헙이 관리하는 파일로 설정되어 업로드 되는 일이 발생했다. 이런 경우 fetch, pull 과정에서 개인 프로젝트 설정이 날라가는 일이 발생할 수 있으니 수정해야한다고 멘토님께서 지적해주셨고 이와 관련한 pr도 올려주셨다. 멘토님께서 올려주신 pr에 포함된 .gitignore 파일을 확인하던 중 .gitignore 문법과 규칙에 대해 이해되지 않는 부분이 있어서 찾아보고 중요하다고 생각되는 것들을 정리했다. .gitignore 문법 공백 → no files #로 시작하는 line → 주석 \를 통해 escape 할 수 있다. ! → 이전 패턴에 의해 exclude 되었던 파..

형 변환 정리

알고리즘 문제를 풀다보니 문제는 풀 수 있겠는데 형변환을 못해서 해결이 안 되는 문제가 꽤 많았다. 그래서 형 변환 문제에 봉착할 때마다 계속해서 추가하며 정리해보려고 한다. String ↔ int Integer의 static 메소드 parseInt, toString을 사용할 수 있다. String → int // 기본형 int i = Integer.parseInt(str); // str이 x진수로 작성되었다고 생각하고 int로 변환 int t = Integer.parseInt(str, x); int → String String str = Integer.toString(i); char ↔ int 이 경우 (char), (int)로 간단하게 변환 가능 char로 변환하는 경우 int 값을 아스키코드로 인식..

개발 공부/Java 2022.05.17

내부 클래스에 static이 권장되는 이유

강의를 듣던 중 강사님께서 내부 클래스를 static으로 선언하시길래 이유가 궁금하여 찾아보았다. 찾아보니 이팩티브 자바에 해당 내용에 대한 설명이 나와있다고 한다. 나중에 꼭 읽어봐야지,, 결론은 내부 클래스에서 외부 클래스의 인스턴스 변수에 접근하지 않는다면 내부 클래스는 static으로 선언하는 것이 좋다는 것이다. 그 이유는 크게 두 가지로 정리할 수 있는데 static으로 선언되지 않은 내부 클래스는 외부 클래스에 대한 숨은 참조를 저장해야 하기 때문에 이를 위한 시간/공간적 복잡도가 증가해 성능이 떨어진다. 내부 클래스가 외부 클래스에 대한 숨은 외부 참조를 갖기 때문에 가비지 컬렉션이 제대로 이루어 지지 않아 메모리 누수가 발생할 수 있다. 숨은 외부 참조 숨은 외부 참조라는 개념이 잘 와닿..

개발 공부/Java 2022.04.26

함수형 인터페이스와 람다식

스프링 및 자바 공부 중에 람다식을 통한 익명 내부 클래스를 종종 사용하게 되었는데 원리를 모르고 따라 사용하기만 하고 있는 듯해서 관련 내용을 공부하고 정리했다. 1. 함수형 인터페이스? 추상 메서드가 한 개만 선언된 인터페이스를 말함. 추상 메서드 외에 다른 static, default 메서드 존재 여부 및 개수는 관계 없음 @FuncationalInterface 어노테이션을 붙여 해당 인터페이스가 함수형 인터페이스인지 검증할 수 있다. (필수는 아니나 함수형 인터페이스가 아닐 경우 오류 발생) 자바에서는 기본적으로 여러 종류의 유용한 함수형 인터페이스를 제공한다. ex) 함수형 인터페이스 Function Generic으로 T 타입 인자를 받아 R 타입을 반환한다. 수학의 ‘function’과 같은 ..

개발 공부/Java 2022.04.26

ISP (인터페이스 분리 원칙) in 스프링 프레임워크

제목이 너무 거창한가 스프링 공부 중 아래와 같이 스프링 컨테이너인 ApplicationContext 의 구현체로 AnnotationConfigApplicationContext 를 설정하고 BeanDefinition을 반환하는 ac.getBeanDefinition() 메서드를 호출하려는데 계속 메서드를 찾을 수 없다는 오류가 발생했다. ApplicationContext ac = new AnnotationConfigApplicationContext(AppConfig.class); 알아보니 ac의 타입을 인터페이스인 ApplicationContext가 아닌 구현체 자체로 설정해주어야 했고, 이러한 일이 발생하는 이유는 객체 지향 설계 원칙인 SOLID 중 ISP 때문이라고 한다. ORP나 DIP, SRP에 ..

개발 공부/Java 2022.04.17

소나무 언어에 다른 기술 접목 아이디어

M -> 1 번역 후 다시 1 -> M 번역 시 머신러닝 활용 다대일로 번역 후 다시 일대다로 번역될 때 항상 동일한 실행을 보장하는 코드로 번역이 되어야 할텐데 이때 머신러닝 기술을 활용하여 적절한 번역 내용을 도출하고 번역 수행할 수 있을 것 같다. 소나무 언어의 범위 외의 Solidity 코드를 소나무 언어로 번역 시 머신러닝 활용 기존에 네트워크에 존재하는 Solidity 코드를 가져다 소나무 언어로 번역하고자 할 때 정의된 소나무 언어의 범위를 벗어나는 Solidity 문법이 발견될 경우 원래대로라면 번역 자체가 이뤄지지 않겠지만 여기에 머신러닝을 활용할 수 있을까? 어떻게 학습을 시켜야할지는 모르겠다. Solidity -> 소나무 언어로 번역 시 적절한 변수명 도출 Solidity는 기본적으로..