티스토리챌린지 10

[Trouble shooting] 키오스크 만들기 - 트러블슈팅

(24.11.22 작성)[Lv1,2]1. branch 커밋 실수• 본래 의도: 각 레벨마다 브렌치를 따로 만들어 사용하기. • 문제 발생: 1) kioskLv2 branch에 Lv1 디렉토리가 같이 push되어 섞임     (이유를 모르겠다.. git pull해서 그런가..? 아님 원래 이런가..? add도 '.' 안 쓰고 파일명 하나씩 지정해서 했는데..)  2) 브렌치 바꾸는걸 까먹는 바람에 Lv1 파일을  kioskLv2 branch에 잘못 push함 • 해결 시도:만약 잘못 푸쉬했다는 사실을 빨리 발견했더라면 git reset HEAD~1 명령어를 시도해보기라도 했을텐데, 내 실수를 뒤늦게 알아차리는 바람에 이 방법을 시도할 수 없었다.  잘못된 커밋을 되돌려 보려고 git log를 건드렸다가 커..

[TIL] 람다식 (with. 익명 클래스, 익명 함수)

'람다식' 이란? (feat. 익명함수) 자바 8에서 도입된 기능으로 간결하게 익명 함수를 표현할 수 있는 방법.익명함수는 이름이 없는 함수이다. 주로 일회성으로 사용된다. 람다식은 익명 함수의 한 형태로 볼 수 있다. 람다식은 함수형 인터페이스의 경우에만 사용이 가능하다.따라서 추상 메서드가 두 개 이상인 추상 클래스의 경우 람다식을 사용할 수 없고, 이때는 익명 클래스를 사용해야한다.  람다식 문법 [기본 형식]/*기본 형식 1*/(parameters) -> expression/*기본 형식 2*/(parameters) -> { statements; }expression, statements가 뭐지? 🤔[expression]• 숫자, 문자열, 변수, 연산자를 이용해 값을 생성하는 코드조각 (= 식)i..

TIL/JAVA 2024.11.27

[TIL] 생긴게 똑같으면 같은거 아닌가요?🤔 (동일성 vs 동등성)

코딩을 하다보면 무언가 서로 비교할 일이 많다. '문자열은 .equals()로 비교하세요.'라고 들어와서 지금까지 문자열을 그렇게 비교해왔는데,정작 '왜 ==은 쓰지 않는 것인지', '==과 .equals()의 차이는 무엇인지' 깊이 있게 공부하지는 못한 것 같다. 예전에 ==과 .equals() 에대해 노션에 정리한적이 있는데, 동등성과 동일성에 대해 알게된 지금 다시보니 너무 간략하게 정리한 느낌..! (나 좀 성장 했나..?🥹)https://www.notion.so/String-equals-vs-129589af8800804c8a5dc92441b5f701?pvs=4 지금부터 동등성과 동일성에 대해 정리하면서 ==과 .equals()의 차이에 대해 더 심도있게 알아보자! ✨[ 동일성 VS 동등성 ]동..

TIL/JAVA 2024.11.21

[Trouble shooting] 계산기 과제 - 트러블슈팅

[Lv1, 2 계산기 구현]1. Getter, Setter를 어떻게 사용해야하는지 몰라 튜터님께 도움을 요청드렸다.자세한 내용: https://ddulut.tistory.com/27 [TIL] Getter와 Setter를 사용하는 이유를 항상 고민하자오늘은 계산기 만들기 과제 Lv2를 구현했다.과제 안에 Getter, Setter를 활용할 것을 요구하는 내용이 있었다.  Getter와 Setter를 만드는 법은 아니까 배운대로 척척 만들었는데, 완성 된 코드를ddulut.tistory.com 2. git hub 업로드후 merge 과정에서 오류 발생git hub에 calulator라는 새로운 브랜치를 만들어서 Lv2 코드를 업로드했다.이후 완성 된 코드를 main branch에 merge하는 과정에서 '..

[TIL] 최소직사각형(JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr [간단 문제 설명]사이즈가 모두 다른 명함들이 sizes[ ][ ] 배열로 주어진다.이 명함들이 모두 들어갈 수 있는 가장 작은 사이즈의 지갑을 만들어야한다. [처음 풀이 방식(정렬 사용)]문제에서 좀 어려웠던 포인트는 명함을 가로/세로 방향으로 돌려서 명함에 수납할 수 있다는 것이다.이는 즉 명함의 가로-세로 방향이 서로 뒤바뀔 수 있음을 의미한다. 그래서 명함의 더 긴 부분을 따로 저장하는 배열 longs[ ]과명함의 더 짧은 부분을 따로 ..

[TIL] Getter와 Setter를 사용하는 이유를 항상 고민하자

오늘은 계산기 만들기 과제 Lv2를 구현했다.과제 안에 Getter, Setter를 활용할 것을 요구하는 내용이 있었다.  Getter와 Setter를 만드는 법은 아니까 배운대로 척척 만들었는데, 완성 된 코드를 보는 순간 '내가 만든 Getter, Setter가 무슨 의미가 있는거지?...'라는 의문이 들었다. 아래는 내가 초기에 만든 Getter, Setter다.private Deque ansList=new LinkedList();public Deque getAnsList(){ return ansList;}public void setAnsList(Deque ansList){ this.ansList=ansList;}코드를 보면 알겠지만, '안에 있는 내용 어차피 다 보여주고, 다 바꿀 수 ..

TIL/JAVA 2024.11.14

[TIL] 캡슐화와 Getter, Setter(JAVA)

오늘은 JAVA 강의를 들으면서 이전에 배운 내용들을 복습해보는 시간을 가졌다.자잘하게 새로 알게 된 내용이 많았는데, 그중 '캡슐화'와 'Getter', 'Setter'에 대한 내용이 인상 깊어서 간단하게 정리해보려한다.🟡 캡슐화가 뭘까?'캡슐화'란 클래스 내부에 선언된 데이터를 접근제어자를 통해 접근을 제한함으로서 함부로 변경할 수 없도록  보호하는 것이다.'객체의 무결성'을 유지하기 위해서, 우리는 필드에 private, default 등의 접근제어자를 사용해 외부의 접근을 막는다.* '객체의 무결성'이란 객체가 변하지 않고 일관된 상태를 유지하고, 또 외부로부터 보호되고 신뢰할 수 있음을 의미한다. 캡슐화에 대해 배우면 이런 의문이 들 수 있다."데이터를 외부로부터 보호하는건 좋은데, 만든 사람..

TIL/JAVA 2024.11.13

[TIL] 이상한 문자 만들기 - 삽질 후기

https://school.programmers.co.kr/learn/courses/30/lessons/12930 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 알고리즘 문제를 매일 최소 한 문제씩 푸는걸 목표로하고 있다.오늘은 '이상한 문자 만들기'를 풀었는데, 이것저것 삽질을 많이 해서 다시는 까먹지 말자는 의미로 정리하려한다.가벼운 후기 글이다. 오늘의 문제를 요약하자면 특정 위치의 문자를 대/소문자로 변경하는 것이다.  대문자, 소문자를 보자마자 생각난게 toUpperCase()와 toLowerCase()였다. 이때의 나는 toUpperCase()와 toLowerCase()가 "문자열"만을 대상..

[TIL] JAVA에서 0.1을 100번 더하면 왜 10이 아닐까? (JAVA)

오늘 프로그래밍 1주차 강의를 듣는데 강사님께서 이런 질문을 던지셨다." float는 4byte만 쓰는데 어떻게 long 보다 더 넓은 범위를 표현 가능한가요? " 해답은 간단하다 정수와는 다르게 실수는 '부동소수점'을 사용하기 때문이다. 🟡 부동소수점이란? - IEEE 754 표준 기반부동소수점은 2진수를 사용해 소수를 표현한다.그중  IEEE 754 표준을 따르는 단정도 부동 소수점은 32bit로 구성되며, 구조는 아래와 같다.부호비트: 1bit지수: 8bit (바이어스 127를 사용. 지수+127해서 2진수로 변환해야함)가수(유효 숫자): 23bit  🟡 2진수로 표현할 수 없는 소수계산 방법은 따로 검색해보면 나오기도 하고, 여기서는 계산방법이 중요한게 아니기 때문에 생략하겠다.여튼 여기에서의..

TIL/JAVA 2024.11.11

[TIL] 최대공약수(GCD)와 최소공배수(LCM) 효율적으로 구하기 (JAVA)

오늘의 데일리 루틴 문제는 '최대공약수와 최소공배수'이다.https://school.programmers.co.kr/learn/courses/30/lessons/12940 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 내가 아는 최대공약수, 최소공배수 구하는 방식을 적용해서 풀어보았는데, 아무리 생각해도 좀 유치한가 싶기도하고, 분명 이것보다 더 효율적인 방법이 있을텐데..하는 찝찝한 마음을 떨쳐버릴 수가 없어서 정보를 찾아보았다. 아래는 내가 초기에 작성한 코드이다.초등학생이 최소공배수, 최대공약수 구하듯이 한땀한땀 정성스럽게 비교해가며 구한다.최소공배수는 브루트 포스를 사용했는데, 수를 하나씩 넣어..

TIL/JAVA 2024.11.08