본문 바로가기

전체 글

(87)
항해 99 - 2023.01.31 TIL 알고리즘 모의고사가 있어서 응시했는데, 생각보다 문제가 원활하게 풀리지는 않은 것 같다. 내가 선택한 문제는 3번 문제로, 실수를 다루는 문제였다. 저번에 풀었던 알고리즘 문제 중 실수를 다루는 문제가 있었기 때문에 자신있게 선택했는데 결과값이 이상하게 나와서 당황했다. 하나씩 값을 찍어보면서 원인을 확인해보니.. break 문을 적절하지 않은 위치에 놓아서 발생한 문제였다. 괄호를 잘 확인하는 습관을 들여야겠다.. 알고리즘 문제 풀이는 마라톤 단계까지는 완료가 되었고, 오늘부터 챌린지 단계에 돌입했다. 마라톤 단계에서는 어느정도 보다보면 해답이 나왔었는데, 챌린지 단계는 계속 이해되지 않는 개념이 종종 있었던 것 같다.. 약수의 개수와 덧셈 주어지는 두개의 정수의 범위로, 약수는 더하고 짝수는 뺄셈하여..
항해 99 - 2023.01.30 TIL 이어서 알고리즘 문제 풀이를 진행했다. 오늘 풀었던 문제에 대해서 회고해보고자 한다. 내림차순으로 배치하기 주어진 문자열을 내림차순으로 배치하여 반환하는 문제이다. import java.util.Arrays; import java.util.Collections; public class StringDescendingOrder { public String solution(String s) { String[] strArr = s.split(""); Arrays.sort(strArr, Collections.reverseOrder()); StringBuffer str = new StringBuffer(); for (int i = 0; i < strArr.length; i++) { str.append(strArr[..
항해99 - 3주차 WIL 3주차에는 자바 객체지향과 SOLID 5원칙에 대해서 배우고, 알고리즘 문제 풀이를 시작했다. 객체지향 객체지향에 대해서는 어느정도 정리가 된 느낌이다. 다형성의 의미와 장점, 그리고 추상화에 의존해야만 하는 것(추상 클래스와 인터페이스의 활용) 그동안 어렵게만 느껴졌던 코드들이 조금은 수월하게 읽히는 느낌이다. SOLID는 다른 건 잘 이해가 되는데, 아직 리스코프 치환원칙이 정리가 되지 않았다. 세션으로 개념을 정리해주었음에도.. 아직 뜬구름 잡는듯한??느낌이 있는 것 같다. 일단은 상속의 의미 = 분류 라는 키워드를 머릿 속에 넣어두고 후에 다시 공부해볼 예정이다. 알고리즘 항해 측에서 페어 프로그래밍이라는 새로운 방식으로 문제를 풀 것을 강조했는데, 2인 1조로 역할을 부여하여 함께 문제를 풀어나..
항해 99 - 2023.01.28 TIL 오늘도 전 날에 이어서 알고리즘 문제풀이를 계속 진행했다. 정수 제곱근 판별 임의의 정수를 제곱근 처리하여, 1을 더하여 제곱했을 때 정수인지 판별하는 문제이다. class Solution { public long solution(long n) { double x = Math.sqrt(n); if(Math.pow(x,2)==n){ return (long)(Math.pow(x+1,2)); }else{ return -1; } } } Math 클래스의 제곱 관련 함수를 사용했다. Math.pow(수, 제곱횟수) - 지정된 횟수로 제곱하여 double 타입으로 반환한다. Math.sqrt(수) - 수의 제곱근 값을 double 타입으로 반환한다. 제일 작은 수 제거하기 주어지는 배열에서 가장 작은 수를 뽑아내어..
항해 99 - 2023.01.27 TIL 기초 언어 학습 주가 끝나고, 프로그래밍 기초 주차가 시작되었다. 오늘부턴 지금까지 배운 개념들을 토대로 팀원들과 알고리즘 문제를 풀어보는 과정으로 학습을 진행했다. 난이도는 프로그래머스 코딩테스트 lv1에 있는 문제들로 구성되어 있었다. 팀에서 2명씩 짝지어서 함께 문제를 풀어보았다. 오늘 풀어본 문제를 돌아보면서 헷갈렸던 부분이나 유용한 함수에 대해서 정리해보고자 한다. 2016년 인자로 주어진 날짜에 해당하는 요일을 계산하는 문제였다. import java.time.DayOfWeek; import java.time.LocalDate; import java.time.format.TextStyle; import java.util.Locale; class Solution { public String so..
항해 99 - 2023.01.26 TIL 오늘은 객체지향의 5원칙인 SOLID에 대해서 학습을 진행했다. 객체지향 파트를 나름 열심히 공부한 것 같은데, SOLID가 어렵게만 느껴졌다. 하나 하나씩 천천히 학습을 진행했고, 나름대로 각 원칙에 대해서 정리를 해보았다. 단일 책임 원칙 (Single Responsibility Principle, SRP) 단일 클래스에 여러가지 기능을 부여하지 않고, 여러 클래스로 기능을 분산하여 객체별로 책임을 나누는 것을 말한다. 개방 - 폐쇄 원칙(Open-Closed Principle, OCP) 확장에는 편리하되, 변경되지 않아야한다. 기능 추가 요청 시에 클래스 확장을 통해 손쉽게 구현할 수 있지만, 확장에 따른 클래스 수정은 최소화하도록 프로그램을 설계하는 것을 말한다. 리스코프 치환 원칙(Liskov ..
항해 99 - 2023.01.25 TIL 오늘은 객체지향 Part2를 학습 주제로 학습을 진행했다. 가장 중요하다고 생각했던 캡슐화, 다형성, 인터페이스를 집중적으로 보았다. 그동안 객체지향을 정리한 내용을 블로그에 업로드해왔는데, 학습한 내용을 정리해서 블로그에 한번에 업로드 하였다. https://9401ndk.tistory.com/31 객체지향 프로그래밍(2) - 접근 제어자 제어자(modifier) 란? 클래스, 변수, 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 하나의 대상에 여러 제어자를 같이 사용 가능하다. (접근 제어자 제외) 순서는 상관 없으나, 주로 9401ndk.tistory.com https://9401ndk.tistory.com/32 객체지향 프로그래밍(2) - 다형성 다형성 개념은 클래스와 인터페이스를 활..
객체지향 프로그래밍(2) - 추상클래스와 인터페이스 추상 클래스 - 미완성 설계도 일반 클래스와 동일하나, 미완성 메서드가 포함된 클래스 abstract class absClass{ //추상 클래스 abstract void absMethod(); //추상 메서드 } 클래스들 간 공통적으로 사용되는 부분을 뽑아 추상클래스로 작성하여, 상속받아 사용할 수 있다. abstract class Player { // 추상 메서드를 가진 클래스 abstract // 속성 : 인스턴스 변수 선언 가능 boolean pause; // 일시정지 상태를 저장하기 위한 변수 int currentPos; // 현재 Play 되고 있는 위치 저장하기 위한 변수 // 추상클래스도 생성자 필요! Player() { pause = false; currentPos = 0; } abstr..