java26 자바 - 프로그래머스 - 로또의 최고 순위와 최저 순위 (최적화 하기) 프로그래머스에서 로또의 최고 순위와 최저 순위를 풀었다. 문제는 어렵지 않았으나 최적화된 코드를 고민해 보는 시간을 가졌고 이번 블로그는 그 내용을 다뤘다. 문제와 예시는 다음과 같다. 해당 문제에 대한 접근 방법은 생각보다 용이했다. 🤓 코드 설계 1. lottos와 win_nums의 같은 값이 있다면 카운트한다. 2. 0의 개수를 카운트한다. 3. 같은 값의 개수는 최저 순위, 같은 값의 개수+0의 개수가 최고 순위가 된다. 🤨 구현한 코드 (복잡한 로그 주의⛔️) 그렇게...구현한 나의 코드는 else if의 성지가 되었다... package ImplementationAlgorithm; import java.io.IOException; import java.util.Arrays; public cla.. 2024. 4. 23. 자바 - 프로그래머스 - 두 개 뽑아서 더하기 (Stack) TIL 기준 1. 어떤 문제가 있었는지 2. 내가 시도해 본 것들 3. 어떻게 해결했는지 4. 뭘 새롭게 알았는지 =문시해알 1. 어떤 문제가 있었는지 프로그래머스 문제 중 두 개 뽑아서 더하기 라는 문제를 마주했다. 내용은 다음과 같다. 2. 내가 시도해 본 것들 🤓 코드 설계 (1) Sort로 정렬 (2) 정렬한 배열을 이중 for문으로 값 구하기 (3) 중복값 제거하기 (4) Sort로 배열 정렬 (2) 번에 있어서 처음에는 배열에 담을 그릇을 Queue로 사용하였으나 FIFO이기 때문에 순서대로 담긴 것은 오름차순이었다. 이때 for문을 돌려 위에서부터 아래로 배열을 담아 que.pop()을 하면 됐겠지만 더 효율적인 방법을 생각하다가 Stack을 구현하게 되었다. Stack은 FILO이니 단방향.. 2024. 4. 9. 배열 복사 - Arrays.copyOfRange() TIL 기준 1. 어떤 문제가 있었는지 2. 내가 시도해 본 것들 3. 어떻게 해결했는지 4. 뭘 새롭게 알았는지 =문시해알 :) 1. 어떤 문제가 있었는지 프로그래머스에서 K번째수 를 풀다가 배열을 복사하는 방법을 찾아보게 되었다. 먼저 프로그래머스 문제와 예시는 다음과 같다. 2. 내가 시도해 본 것들 🤓 코드 설계 문제를 풀기 위해 나름의 설계를 했다. [이중 for문을 사용해서 배열 선언 및 저장하기] (1) i~j번째 숫자 배열을 찾아서 새로운 배열에 저장하기 (2) 배열 정렬 (3) k 번째 숫자 반환 🤨 구현한 코드 (복잡한 로그 주의⛔️) 그렇게 해서 도출된 코드는 다음과 같다. import java.util.Arrays; class Solution { public int[] solutio.. 2024. 4. 8. 자바) 문자를 char 타입의 배열로 변환하는 2가지 방법 문자(String)를 배열(문자열)로 변환하는 방법 2가지를 소개합니다. 1. 반복문 String s = "abcde"; char[] charS = new char [s.length()]; for (int i=0; i 2024. 3. 25. 프로그래머스 - 가운데 글자 가져오기 - 자바 프로그래머스 알고리즘 문제를 풀다가 해결과정을 기록으로 남겨보았습니다. 가운데 글자 가져오기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제와 예시는 아래와 같습니다. 문제를 풀기 위해 설계 과정에서 문자열을 char 배열로 변환 후 저장해야겠다고 생각하였습니다. 그래서! 문자/문자열(String)을 배열로 변환하는 방법 2가지를 소개합니다. 1. 반복문 String s = "abcde"; char[] charS = new char [s.length()]; for (int i=0; i 2024. 3. 25. Kotlin과 친해지기 3 - class, constructor(1) 오늘은 코틀린의 클래스, 생성자에 대해 공부했다. 코틀린 공식문서에 따르면 클래스에 대한 정의는 다음과 같다. 코틀린의 클래스는 클래스의 이름과, 헤더(파라미터, 주 생성자 등) { }를 감싸고 있는 바디로 이루어진다. 만약 바디가 없으면 { }은 생략할 수 있다. 코틀린의 생성자는 다음과 같다. 클래스에는 주 생성자가 있으며 2개 이상의 secondary 생성자가 있을 수 있다. 주 생성자는 클래스의 해더에서 선언되며 클래스의 이름과 선택적 파라미터 타입 뒤에 선언된다. 주 생성자에 어노테이션이나 visibility modifier가 없으면 constructor 키워드는 생략이 가능하다. *아래 생성자의 visibility modifier 참고 주 생성자는 헤더 안에 존재하는 인스턴스와 인스턴스의 pr.. 2023. 12. 11. 프로그래머스 - 문자열의 앞의 n글자 - 자바 난이도 : Level 0 문제는 문자열 my_string에서 n만큼 앞에서부터 문자열을 가져오는 것이다. 문자열을 가져오는 함수로 subString 함수가 생각났다. 1. substring(start, end) my_string.substring(start, end)이라면 start번부터 end까지의 문자열을 가져온다. 예) my_string이 ProgrammerS123, n이 3인 경우, my_string.substring(0,n) 는 my_string.substring(0,3)으로 값은 Pro 2. 1. substring(start) my_string.substring(start)이라면 start부터 문자열을 가져온다. 예) my_string.substring(0)인 경우, 값은 ProgrammerS.. 2023. 12. 4. @NoArgsConstructor 와 @RequiredArgsConstructor @NoArgsConstructor를 평소에 쓰지만 왜 쓰는지 몰라 정리해보았습니다. "NoArgsConstructor"는 Java 프로그래밍 언어에서 클래스의 생성자 중 하나를 나타내는 용어입니다. 생성자는 객체가 생성될 때 해당 클래스의 인스턴스를 초기화하는 특별한 메서드입니다. 생성자를 사용하여 객체의 필드를 초기화하거나 다양한 작업을 수행할 수 있습니다. "NoArgsConstructor"는 이름에서 알 수 있듯이, 매개변수 없이 인스턴스를 생성하는 생성자를 의미합니다. 즉, 해당 클래스의 인스턴스를 생성할 때 어떠한 매개변수도 필요하지 않습니다. 이러한 생성자는 주로 간단한 초기화 작업이나 디폴트 값으로 객체를 생성할 때 사용됩니다. 예를 들어, 다음은 "NoArgsConstructor"를 가진 .. 2023. 8. 23. 팀프로젝트 : Swithme 스터디플래너 ERD 이번 팀 프로젝트는 개인 + 그룹 스터디 플래너이다. 설명 : 1. 개인이 게시물을 올릴 수 있고 그 게시물에는 원하는 목표를 적고 스톱워치/타이머 기능을 활용하여 스터디에 집중한다. 2. 공부 시간은 마이페이지엣서 누적시간을 조회할 수 있다. 3. 게시물은 메인 페이지에서 카테고리별로 리스트화되고 누구나 조회가 가능하다. 4. 개인은 관심사가 비슷한 유저를 검색/조회할 수 있고 유저를 그룹에 초대할 수 있다. 5. 그룹 상세 페이지에는 그룹의 공동 목표를 적고 누적 공부시간이 높은 순으로 유저순위가 표시된다. 꽤나 복잡한 연관관계를 가졌기 때문에 ERD를 설계하는 데에 시간이 오래 걸렸다. 특별히 고민이 필요한 연관관계는 스톱워치/타이머와 누적시간의 테이블을 어떻게 설정하는 지였다. 1. 스톱워치/타이.. 2023. 8. 17. TIL) 투표 프론트앤드 부트스트렙 템플렛, 백엔드 DB 가져오기 오늘 한 일 - 투표 프론트앤드 부트스트렙 템플렛 찾기 - 프론트앤드에 투표 백엔드 DB 가져오기 [투표 프론트앤드 부트스트렙 템플렛 찾기] 사용한 투표 프론트앤드 부트스트렙 템플렛 https://www.bootdey.com/snippets/view/vs-voting-system Bootstrap html snippet. vs voting system Bootstrap snippet and html example. vs voting system, this UI example was created for web development using HTML, Javascript and CSS by Bootdey Admin www.bootdey.com 템플렛으로 제공되는 파일은 html과 css. **여기서 ht.. 2023. 7. 19. TIL) @Builder 빌더패턴 (Builder Pattern) @Builder Lombok에 속하는 인터페이스 클래스를 생성한다. The field annotated with @Default must have an initializing expression; that expression is taken as the default to be used if not explicitly set during building 생성자 또는 클래스 위에 @Builder을 입력하면 빌더패턴 코드가 build 된다. 생성자 상단에 선언 시 생성자에 포함된 필드만 build 된다. @Getter @NoArgsConstructor // 생성자를 자동으로 생성 @ToString // 필드 값을 String으로 변환 , toString() 메서드 자동 생성 @Builder public cl.. 2023. 7. 14. TIP) Intellj Tip For Mac (Update) *편한 단축키, 관련 정보가 있으면 업데이트 됩니다. 단축키 shift + command + F 전체 파일에서 찾기 control + Fn +F6 관련메서드/객체 한번에 바꿈 2023. 6. 27. WIL) Spring의 이해 WIL 지난 일주일 동안 가장 인상 깊었던 배움에는 뭐가 있었지? 그 배움까지 다가가는데 어떤 어려움이 있었지? 그 과정에서 나는 무엇을 깨달았고, 어떤 감정/생각이 들었었지? 결과적으로, 현재 나의 상태는? 이 상태에서 다음 일주일을 더 잘 보내려면 어떻게 해야 할까? 지난 일주일 동안 가장 인상 깊었던 배움에는 뭐가 있었지? Spring으로 코드를 짠다는 의미와 Spring Boot가 가진 이점 그 배움까지 다가가는데 어떤 어려움이 있었지? Spring 문법을 배우기 시작하면서 그 문법을 완전히 이해하기도 전에 실습을 따라가야 했었다. 때문에 이 코드가 어떤 흐름과 원리로 진행이 되는지 확신이 서지 않았다. 그 과정에서 나는 무엇을 깨달았고, 어떤 감정/생각이 들었었지? Spring 강의를 듣고 교안.. 2023. 6. 25. TIL) @Pattern 으로 이메일 데이터 검증하기 다음과 같은 과제를 받았다. Bean Validation의 애너테이션 @Pattern을 사용해서 회원 가입 Email 데이터 검증을 진행합니다. Email 형식 : 계정@도메인.최상위도메인 정규 표현식 (Regular Expression) 같은 검색어를 구글링하여 방법을 찾습니다. 문제는 이 애너테이션을 어디다가 넣어야 하고 무엇을 수정해야 하는지 알 수가 없었다. 구글링을 하여 보편적으로 사용하는 이메일을 위한 정규 표현식을 찾아보았다. 이메일 형식 (exam@exam.com) 의 정규식 표현 @Pattern(regexp = "^[A-Za-z0-9_\\.\\-]+@[A-Za-z0-9\\-]+\\.[A-Za-z0-9\\-]+$") 정규 표현식은 DTO파일, 패키지에 추가하면 된다고 하였다. 그러나 의심부.. 2023. 6. 21. TIL) 오탈과 탈자를 조심하자! 문제: 메모장 만들기 실습에서 메모를 저장하는 POST 가 구현되지 않았다. [입력 코드] package com.sparta.memo.controller; import com.sparta.memo.dto.MemoRequestDto; import com.sparta.memo.dto.MemoResponseDto; import com.sparta.memo.entity.Memo; import org.apache.catalina.users.MemoryRole; import org.springframework.web.bind.annotation.*; import java.util.*; @RestController @RequestMapping("/api") public class MemoController { pri.. 2023. 6. 14. WIL) 6월 2째주 주간회고 / Java 문법과 키오스크 관리자 모드 만들기 WIL 지난 일주일 동안 가장 인상 깊었던 배움에는 뭐가 있었지? 그 배움까지 다가가는데 어떤 어려움이 있었지? 그 과정에서 나는 무엇을 깨달았고, 어떤 감정/생각이 들었었지? 결과적으로, 현재 나의 상태는? 이 상태에서 다음 일주일을 더 잘 보내려면 어떻게 해야 할까? 지난 일주일 동안 가장 인상 깊었던 배움에는 뭐가 있었지? 협업하는 방법 (의사소통, 책임감, 끈기) 자기 객관화 if문 응용하여 사용하기 (아직 ing) 그 배움까지 다가가는데 어떤 어려움이 있었지? 예쁜 말과 정확한 의사전달을 하기 위해 한 번 더 생각하고 이야기하였다. 정확하게 의사전달하는 것이 어려웠는데 계속해서 말을 paraphrasing 하고 연습하니 도움이 되었다. 풀리지 않는 문제를 인정하고 혼자 충분히 고민하는 시간을 주.. 2023. 6. 11. TIL) If문, 넌 내꺼야 (੭ꐦ •̀Д•́ )੭* ᑦᵒᔿᵉ ᵒᐢᵎᵎ 드디어 2번째 팀과제를 마쳤다. 결론부터 말하자면 내가 구현한 기능은 발전과 스스로에 대한 고민이 매우 필요한 코드였으므로 앞으로 더 열심히 해야겠다는 생각이 많이 들었다. 오늘 TIL은 아주아주 간단한 if문 사용법을 풀어쓴 경험담이다. 문제: 코드를 병합하는 과정에서 기존에 내가 만든 주문 현황보다는 다른 팀원이 대기주문목록, 완료주문목록(주문 건 별로 리스트를 add 하는 arraylist메서드)에 사용한 코드를 긁어오는 것이 소비자 입장에서 보았을 때 편리할 것이라 판단되었다. 그래서 코드를 수정하는 과정이었고 주문완료된 목록, 대기 중인 목록을 순차적으로 보이도록 해야 했다. 이때, if문을 활용하여 주문완료되지 않거나 대기중인 목록이 없으면 완료되지 않았다 / 목록이 없다는 문구를 띄어야 했다.. 2023. 6. 9. TIL) IntelliJ와 Git으로 협업을 해보자 TIL 기준 1. 어떤 문제가 있었는지 2. 내가 시도해 본 것들 3. 어떻게 해결했는지 4. 뭘 새롭게 알았는지 =문시해알 문제: 나의 상황은 Intelij로 코드를 작업 중이었으며 git을 사용하여 Github repository에 수정된 코드를 올려야 하는 상황이다. 이미 master branch는 생성이 되어있었고 4명의 팀원들이 협업하는 과정이기 때문에 내가 수정한 부분을 머지(Merge)하기 위해서 나의 브랜치를 커밋, 푸시하고 마스터 브랜치에 푸시와 머지를 하였다. 머지 과정에서 충돌 부분이 생겼으나 고민하지 않고 accept right를 눌렀더니 수정되어야 할 부분이 수정되지 않은 상황이었다.(Red Highlight!) 우선 충돌을 해결하기 위해 튜터 님께 부탁하여 revert과정을 거쳤.. 2023. 6. 8. TIL) 최근 주문목록만 출력할 수 있도록 if문 사용하기 TIL 기준 1. 어떤 문제가 있었는지 2. 내가 시도해 본 것들 3. 어떻게 해결했는지 4. 뭘 새롭게 알았는지 =문시해알 오늘은 1문제에 봉착하여 이를 풀어가는 과정을 기록하였다. 키오스크를 업그레이드하는 팀과제를 부여받았는데 내가 맡은 업무는 소비자가 주문 현황 화면을 선택하였을 때 다음과 같은 정보를 포함하는 화면을 만드는 것이었다. 주문 현황에서는 맨 위에 완료된 최근주문 3개를 출력한다. 그 아래에 대기 중인 모든 주문 목록을 출력한다. 가 포함되어 있어야 했고 기존에 만들어 놓은 코드는 최근 주문과 대기 중인 주문 목록이 모두 출력 가능하였으나 최근 주문 3개를 출력하는데 어려움이 있었다. (문제) [ 현재 상황] public void OrderStatus() { //주문현황 System.o.. 2023. 6. 8. TIL) 팀과제 - MemoVO로 메모장 구현하기 TIL 기준 1. 어떤 문제가 있었는지 2. 내가 시도해 본 것들 3. 어떻게 해결했는지 4. 뭘 새롭게 알았는지 =문시해알 팀과제로 메모장 만들기를 하게 되었다. (아이디와 비밀번호를 포함하여 입력, 목록 리스트, 수정, 삭제, 완료 등) 내가 맡은 역할은 메모리스트 중에서도 글 삭제 후 글 번호를 다시 붙여준다. 글이 삭제된 후 새 글이 입력될 때 idx가 기존 idx값에 이어서 1씩 증가할 수 있도록 count의 값을 수정한다. 였고 문제의 서막이 시작되었다. 메모 리스트 (MemoList) 조건 여러 건의 메모를 저장하는 클래스 이다. 메모 전체를 조회할 수 있다. (Getter/Setter 존재) 작성 최신 순으로 메모를 출력한다. 1건의 글을 메모 리스트에 추가할 수 있다. 글의 수정 또는 삭.. 2023. 6. 5. WIL) 찐아기개발자의 코드 번아웃과 극복법 WIL 지난 일주일 동안 가장 인상 깊었던 배움에는 뭐가 있었지? 그 배움까지 다가가는데 어떤 어려움이 있었지? 그 과정에서 나는 무엇을 깨달았고, 어떤 감정/생각이 들었었지? 결과적으로, 현재 나의 상태는? 이 상태에서 다음 일주일을 더 잘 보내려면 어떻게 해야 할까? 지난 일주일 동안 가장 인상 깊었던 배움에는 뭐가 있었지? 이론 공부의 중요성 포기하지 않는 마음 그 배움까지 다가가는데 어떤 어려움이 있었지? 개인과제로 키오스크를 만드는 일이 있었는데 기본적인 입력 부분까지 했을 뿐, 수정, 삭제를 구현하지 못했다 (기술 부족) 알고리즘 수업을 통해 간단한 If/while 등의 퀴즈부터 풀어보았는데 제대로 풀 수 있는 문제가 없었다 (기술 부족) 그 과정에서 나는 무엇을 깨달았고, 어떤 감정/생각이 .. 2023. 6. 5. TIL) Oracle에서 제공한 array Quiz TIL 기준 1. 어떤 문제가 있었는지 2. 내가 시도해 본 것들 3. 어떻게 해결했는지 4. 뭘 새롭게 알았는지 =문시해알 오늘은 오라클에서 배열에 관해 배웠고 퀴즈 오답을 중점으로 가져왔다. 틀린 퀴즈 *빨간 글씨는 틀린 것 The term "instance variable" is another name for non-static field. The term "class variable" is another name for static field. A local variable stores temporary state; it is declared inside a method. A variable declared within the opening and closing parenthesis of a me.. 2023. 6. 5. [Java 문법 종합반] 연산자, 조건문, 반복문, 컬렉션, 배열, 가변배열 [학습 내용] 다양한 연산자 조건문과 반복문 배열로 연속된 데이터를 저장 관리하는 법 컬렉션(새로운 자료구조) 연산자 우선순위 산술 > 비교 > 논리 > 대입 (연산자 여러 개가 함께 있는 연산을 계산할 때 우선순위) 단, 괄호는 최우선순위 산술 연산할 때 타입이 다를 때 둘 중에 저장공간 크기가 큰 타입으로 일치시킨다 가장 큰 변수 타입으로 일치! if문과 switch(피연산자) / case(조건) 문의 차이 1. 복합조건 if문은 복합조건 지원 () 안에 조건 여러 개 가능 그러나 switch 문은 피연산자 한개 조건만 지원 가능 2. 코드중복 if문은 코드중복 많은 반면 switch문은 적다 그래서 switc문이 가독성이 좋다 반복문 for, while, do-while for문 특정 조건에 따라 .. 2023. 5. 25. TIL) Scanner 사용해서 값 출력하기! TIL 기준 1. 어떤 문제가 있었는지 2. 내가 시도해 본 것들 3. 어떻게 해결했는지 4. 뭘 새롭게 알았는지 =문시해알 오늘은 2가지 문제에 봉착하여 이를 해결한 과정을 적었다 [1] 불필요한 코드는 삭제하자 자바 문법 강의에서 기초 중에 기초인 형변환 실습을 하고 있는데 값이 안 나왔다 public static void main(String[] args) { // double or float형 -> int // 실수 -> 정수 (0.xxx -> 0) double doubleNumber = 10.1010; float floatNumber = 10.10010f; // 정수 - > 실수 int intNumber = 10; double doubleNumber = (double)intNumber; floa.. 2023. 5. 23. [Java 문법 종합반] 1주차 : JVM 및 프로젝트 생성 / TIL 1. 개발 언어 언어는 우리가 사람과 사람 간에 소통을 할 때 사용한다 이와 마찬가지로 프로그래밍 언어는 사람과 컴퓨터간에 소통을 하기 위해 사용되는 언어이다 초창기에는 어떻게 이 프로그래밍 언어가 발전되어 왔을까? 강사님의 말씀에 의하면 모든 것은 시스템으로 이루어져있다고 한다 그리고 여기서 시스템이란 input과 output으로 이루어진 것이며 동일한 input에 동일한 output이 나온다고 한다 결국 세상은 시스템으로 이루어져있으며 이 시스템은 인풋과 아웃풋으로 구성되어 있는 것이다 데이터 타입이란 입력/출력하는 데이터를 관리할 수 있도록 특정한 분류를 제공한 것 예) 숫자형/문자형 타입 메서드는 프로그램이 하는 행동을 정의한 것으로 쉽게 생가하면 어떠한 행동/제스처라고 생각하면 된다 예) 자다,.. 2023. 5. 22. Java 문법 종합반 시작! 스파르타코딩클럽에서 제공하는 을 수강하게 되었다 본 종합반은 자바를 집중적으로 학습하되 현재 프로그래밍 언어 중 가장 많이 사용하는 언어인 자바의 기초적인 부분부터 심화과정을 학습할 예정이다 [수업 목표] 자바 언어에 대한 이해 자바의 실황경인 JVM 이해 변수와 상수 이해 변수를 담는 저장공간 이해 메모리 이해 저장공간 종류 이해 강사 님은 최원장 튜터님이 진행해 주시며 종합반 강의는 온라인 강의로 약 5주 차까지 있다 튜터님께서는 처음부터 부담을 가지지 말고 자주 반복해서 듣고 예시 코드가 나오면 반복해서 나의 것으로 만들라고 하셨다 그럼 자바의 고수가 되는 첫 여정을 시작해 보자! 2023. 5. 22. 이전 1 다음