Develop
프로그래머스 Lv.1 - 12930 이상한 문자 만들기
프로그래머스 Lv.1 - 12930 이상한 문자 만들기 문제 풀이 문제 설명 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요. 문제의 자세한 내용은 해당 링크를 통해 확인 : 문제 링크 풀이 코드 class Solution { public String solution(String s) { StringBuilder ret = new StringBuilder(); // 반환할 문자열을 담을 StringBuilder 타입 변수 생성 for(String str : s.split(" ", -1)) { // 입력받은 문자열 s를 공백..

Java BufferedReader, BufferedWriter 사용법
Java를 배우기 시작하여 입출력을 구현할 때 사용하는 메서드는 일반적으로 출력에는 System.out.println() 메서드를 사용하고 입력에는 Scanner 클래스를 사용하여 구현하게 될 텐데, 알고리즘 문제를 풀다 보면 속도로 인한 문제가 발생하게 됩니다. 이는 System.out.println() 메서드와 Scanner 클래스의 메서드 동작에 걸리는 시간으로 인해서 발생하는 경우도 있기 때문에 이를 해결하고자 입출력 속도가 빠른 BufferedReader와 BufferedWriter 클래스를 찾아서 사용하게 됩니다. 이 때 해당 클래스들의 사용법을 자주 사용을 하다 보면 외워지겠지만.. 아직은 사용법을 찾아서 사용하다보니 사용법을 정리한 포스팅을 작성하게 되었습니다. Buffered? 클래스의 ..
백준 코드 작성시 참고 항목
해당 포스팅의 이유는 계속해서 자주 문제를 푼다면 까먹을리 없지만.. 까먹을 정도의 시간이 흐른 후 다시 들어가서 풀려고 하다보니 계속 찾아보기가 귀찮아서 그냥 정리를 해두려고 작성한 내용입니다. 따라서 제 개인적인 견해가 많이 첨가되어 있음을 알려드립니다. 백준 사이트에서 알고리즘 문제를 풀 때, Java의 경우 아래의 내용들을 참고해서 작성을 해야한다. 클래스 작성시 클래스명은 Main으로 작성 문제 해결 메서드는 public void main 메서드를 사용 입력을 받아야하는 경우, 입력을 받는 코드 작성 필요 문제 해결 후 최종값을 반환이 아닌 출력으로 표현 (public void main을 사용하기 때문에 당연한 내용) 입출력의 경우 속도를 감안하여 BufferedReader, BufferdWri..

제네릭(Generic)이란?
제네릭에 대한 설명에 앞서, Java에서 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 컬렉션 프레임워크(collection framwork)라고 합니다. 자주 쓰이는 컬렉션 프레임워크의 클래스 구조도를 보면 아래의 이미지와 같습니다. (아래의 이미지에 나와있는 구조도는 간략화되어 있으며, 실제로는 훨씬 더 많고 복잡합니다.) 제네릭(Generic) 위 이미지에서 보면 라던가 라는 표현을 볼 수 있습니다. 해당 표현은 제네릭을 의미하며, 제네릭이란 사전적 의미로 "일반적인"이라는 의미를 갖고 있는 단어입니다. Java에서도 비슷한 의미로 사용되며, 클래스 내부에서 사용할 데이터 타입을 외부에서 파라미터 형태로 지정하여 일반화를 한다는 의미입니다. 즉, 클래스 및..

Java 클래스 검색법
Java에서 필요한 메서드를 찾을 때, 사용하고 있는 클래스의 문서를 참고하면 어떠한 메서드들이 있는지 알 수 있습니다. 여기서 말하는 문서란 Java의 공식 문서이며, Oracle에서 Java 버전별로 클래스의 문서를 제공하고 있습니다. 해당 문서를 검색하는 방법은 구글에 간단하게 "Java String doc" 이런 식으로 검색하시면 해당 클래스에 대한 문서가 나옵니다. 위 이미지처럼 구글링 시 나오는 페이지 중 Oracle Help Center 페이지를 참고하시면 됩니다. URL로는 docs.oracle.com인 사이트입니다. 해당 사이트를 들어가 보면 아래와 같은 이미지를 볼 수 있습니다. 아래의 이미지는 살짝 아래로 이동한 상태입니다. 보시면 필드 및 생성자, 메서드 요약(summary) 항목이..
![[2022.06.10] Instagram 스키마 디자인](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbfUnQK%2FbtrIaAqDSVY%2FAAAAAAAAAAAAAAAAAAAAADhMsMe0CqrSdFIYCKtuioBQ3nAMxeYzdzb2zrzx_Td_%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DX7vsB6QqdDJ%252B1tBnFIgHwCcfXRA%253D)
[2022.06.10] Instagram 스키마 디자인
오랜만에 포스팅을 하는데.. 계속 다짐을 하지만 천천히라도 정리한 글을 올릴 예정입니다.. ㅠㅠ 해당 포스팅은 Instagram의 피드에 대한 DB 스키마 디자인을 생각해 보고 정리한 글입니다. DB 스키마 디자인을 실습한 사이트는 이곳입니다. 인스타그램 피드 인스타그램의 피드는 위 이미지와 같은 형태로 올릴 수 있습니다. (위 피드는 제 계정인데.. 활동을 안 합니다) 해당 이미지로 피드의 기능들을 분류해 보면 다음과 같이 분류가 가능합니다. 여러 장의 사진 업로드 본문 댓글 게시글에 대한 좋아요 및 댓글에 대한 좋아요 태그 (해당 이미지에는 보이지 않지만.. 인스타그램의 "#태그"를 의미합니다) 대강 이 정도의 기능으로 분류가 가능하며, 인스타그램의 시스템 중 계정 팔로우, 팔로워 기능도 존재합니다...
![[2022.05.24] 자료구조/알고리즘 - 재귀](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbyzjBu%2FbtrH1CcXbL8%2FAAAAAAAAAAAAAAAAAAAAAFm-HiBp1p3gJj5NOtsY25s2MW-saSILy3sW2oJBjf4d%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1756652399%26allow_ip%3D%26allow_referer%3D%26signature%3DClQ6P2DOsImtqkittsIVRHvDedc%253D)
[2022.05.24] 자료구조/알고리즘 - 재귀
Section1이 끝나고 Section2가 시작되었다! Section2부터는 매일 간단한 코딩 테스트 문제 1개를 풀기 시작하였다. 그리고 오늘은 자료구조/알고리즘에서 재귀함수에 대해 공부를 하였다. Daily coding 오늘은 입력받은 배열의 첫 요소와 마지막 요소를 뽑아 이를 각각 Key와 Value로 HashMap으로 만들어 반환하는 메서드를 구현하는 문제였다. 이제 시작인 부분이기 때문에 쉬운 문제가 출제된 것 같으나.. HashMap을 초기화하는 방법을 몰라서 검색을 해봐야 했다. 검색 결과 HashMap을 초기화하는 방법은 아래와 같이 구현이 가능하다는 사실을 알았다. new HashMap(){ { put("Key", "Value"); } } 처음 생각할 땐 "new HashMap(){ "K..
[2022.05.23] 모의 기술 면접
페어와 함께 간단한 모의 기술 면접을 진행하였다. 간단한 몇 가지의 질문 리스트 중 각자 3가지를 정하고 그에 대한 답변을 준비해 보고 돌아가면서 질문을 해보고 답변을 해보는 시간이었다. 여러 질문 리스트 중 선택한 3가지의 질문은 아래와 같았다. 자바의 메모리 영역에 대해 설명해 주세요. static 키워드에 대해 설명하고, static을 언제 사용해야 하는지 설명해 주세요. 추상 클래스와 인터페이스의 차이는 무엇인가요? 이 질문들에 대한 답변으로 아래와 같이 정리를 해보았다. 아래는 직접 말로 답변하는 것을 염두에 두고 작성했었기 때문에 구어체로 작성되어 있습니다. 자바의 메모리 영역에 대해 설명해 주세요. 자바의 메모리 영역은 크게 메서드, 힙, 스택 영역으로 나뉩니다. 먼저 메서드 영역에 대해 말..

Section 1을 마치며
C언어 개발자로 4년 9개월(17년 7월 ~ 22년 3월)이라는 경력을 내려두고 Java 개발자로써 도전을 하기 위해서 어떻게 시작할까 고민을 하던 괜찮아 보이는 커리큘럼이면서 KDT(K-Digital Training) 과정이라 국비 지원으로 무료 수강이 가능한 과정을 찾아 지원을 했으나 선발 과정에서 코테를 진행하였고 광탈을 했다고 한다... (코테에 C언어 지원 좀 해줘요!) 그래서 괜찮아 보이는 커리큘럼을 갖는 교육이 뭐 있나 찾아보고 있었는데 마음에 드는 곳을 찾을 수 없어서 그냥 혼자 공부를 할까.. 하던 중 지인의 추천을 받아 코드스테이츠라는 곳이 있다는 것을 알게 되었다. 그래서 찾아보니 이번에 KDT 과정으로 편성되어 무료 수강이 가능하다는 것을 알게 되었고, 커리큘럼을 보니 마음에 들어 ..
[2022.05.13] OOP 심화 2/2 - 다형화, 추상화
OOP의 4가지 특징 상속화 캡슐화 다형화 추상화 오늘은 위 4가지 특징 중 다형화와 추상화에 대한 공부를 진행하였고, 해당 내용들을 두서없이 정리한 게시글입니다. 틀린 내용이 있다면 알려주세요! 다형성(polymorphism) 하나의 객체가 여러 가지 형태(타입)를 가질 수 있는 것을 의미 Java에서는 한 타입의 참조 변수를 통해 여러 타입의 객체를 참조할 수 있는 것을 의미 => 상위 클래스 참조 변수를 통해 하위 클래스의 객체를 참조할 수 있도록 허용한 것 위 문장은 "참조 변수의 제어 가능한 메모리 범위가 참조하려는 객체의 메모리 범위보다 같거나 작아야 한다"라고 표현할 수 있다. 예제 코드로 동작을 알아보자 class Vehicle { public void printInfo() { System..