본문 바로가기

항해 99/Java

(52)
페어 프로그래밍 - 코딩 테스트 4 개인 풀이 코드 리뷰 - ChatGPT 40. 가장 가까운 같은 글자 package test2; public class Test40 { //문자열 s의 각 위치마다 자신보다 앞에 나오면서 //자신과 가장 가까운 곳에 있는 같은 글자의 위치 // "banana"가 주어진다면 // b = -1, a = -1, n = -1, a = 2, n = 2, a = 2 // 자신 앞에 없을 때 -1 반환, 자신 앞에 값이 있을 때 얼마나 앞에 있는지 반환 // count는 자신을 0으로 했을 때 글자 1개 마다 1씩 증가하도록 // 모든 단어의 결과를 int[] 배열로 반환 // 문자열을 split으로 모두 "" 단위로 자르고 // int[] answer의 크기는 s.length // StringBuilder로 Rev..
페어 프로그래밍 - 코딩 테스트 3 개인 풀이 코드 리뷰 - ChatGPT 29. 최대 공약수와 최소 공배수 class Solution { public int[] solution(int n, int m) { // 유클리드 호제법 사용 int[] answer = {gcd(n, m), lcm(n, m)}; return answer; } //최대 공약수 구하기 public static int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b); } //최소 공배수 구하기 public static int lcm(int a, int b) { return a * b / gcd(a, b); } } 유클리드 호제법 사용이 핵심 코드 리뷰 가독성 명명 규칙: 함수명 gcd와 lcm은 각각 최대 ..
페어 프로그래밍 - 코딩 테스트 2 개인 풀이 코드 리뷰 - ChatGPT 14. 서울에서 김서방 찾기 class Solution { public String solution(String[] seoul) { String answer = ""; for (int i = 0; i < seoul.length; i++) { if (seoul[i].equals("Kim")) { answer = "김서방은 "+i+"에 있다"; break; } } return answer; } } 코드 리뷰 가독성 변수 이름: answer 변수는 적절하게 이름이 지어졌습니다. 그러나, seoul 배열의 이름은 이 배열이 무엇을 담고 있는지에 대한 정보를 더 명확하게 해주면 좋을 것 같습니다. 예를 들어, names나 people처럼 더 의미 있는 이름을 사용할 수 있습..
페어 프로그래밍 - 코딩 테스트 개인 풀이 코드 리뷰 - ChatGPT 1. 짝수와 홀수 class Solution { public String solution(int num) { String answer = (num % 2 == 0) ? "Even":"Odd"; return answer; } } 코드 리뷰 코드 스타일과 가독성 변수명: answer 변수명은 명확하게 메소드의 결과를 나타냅니다. 이 경우와 같이 간단한 조건문에서는 변수 없이 직접 return하는 것도 고려할 수 있습니다. 조건문: 삼항 연산자를 사용하여 짝수와 홀수를 판별하는 로직은 매우 간결하며 가독성이 좋습니다. 성능 이 경우, 성능 최적화는 크게 고려할 사항이 아닙니다. 주어진 코드는 이미 매우 효율적입니다. 정수의 홀수/짝수 판별은 비트 연산을 사용하여 더 최적..
WIL - 1 Fact : 이번주 있었던 일, 내가 한 일 월 : 팀원과 간단한 Git을 사용한 협업 연습, Java 기초 개념 복습 화 : 연산자, 조건문, 반복문, 배열 복습 수 : 2인 1조 팀 프로젝트 진행(숫자 야구 프로그램 개발), 객체 지향, 상속, 다형성 복습 목 : 1주차 테스트 진행, 다형성 복습, 역할과 구현, OCP 학습 Feeling : 나의 감정적인 반응, 느낌 Git 사용이 익숙하지 않아서 간단한 push, merge, 충돌에 대한 수정 등을 진행하는 데 어려움을 겪었음. 앞으로 Git을 사용하는 연습을 통해 익숙해 질 필요성을 느낌 쉬운 프로그램을 개발하면서도 팀원과 의견 공유를 통해 좀 더 효율적인 개발을 할 수 있었고 나와는 다른 관점으로 코딩하는 것을 보고 배울 수 있어서 좋았음 첫 ..
역할과 구현, OCP 항해 99 : TIL - 4 학습 내용 정리 다형성 - 역할과 구현 역할과 구현으로 구분하면 단순해지고, 유연해지며 변경도 편리해짐. 장점 클라이언트는 인터페이스(역할)만 알면 된다. 클라이언트는 구현 대상의 내부 구조를 몰라도 된다. 클라이언트는 구현 대상의 내부 구조가 변경되어도 영향을 받지 않음 클라이언트는 구현 대상 자체를 변경해도 영향을 받지 않음 자바 언어의 다형성 활용 역할 = 인터페이스 구현 = 인터페이스 구현 클래스, 구현 객체 객체 설계 시 역할과 구현을 명확히 분리, 객체 설계 시 역할(인터페이스)를 먼저 부여하고 역할을 수행하는 구현 객체 만들기 객체의 협력 관계 클라이언트 : 요청 , 서버 : 응답 다형성의 본질 클라이언트 변경 없이, 서버의 구현 기능을 유연하게 변경 가능 한계 ..
Java 기초 12 - 다형성 다형성( Polymorphism) 객체지향 프로그래밍의 대표 특성인 캡슐화, 상속, 다형성 중 하나. 한 객체가 여러 타입의 객체로 취급될 수 있는 능력 다형성의 핵심 이론 다형적 참조 메서드 오버라이딩 다형적 참조 부모와 자식이 있고, 각각 다른 메서드를 가지는 상속 관계 Parent class package poly.basic; public class Parent { public void parentMethod() { System.out.println("Parent.parentMethod"); } } Child class package poly.basic; public class Child extends Parent{ public void childMethod() { System.out.println..
객체 지향, 상속, 다형성 항해 99 : TIL - 3 학습 참조 : 강의 - Java 문법 종합반 3주차 학습 내용 정리 객체지향 프로그래밍 객체(인스턴스)들간의 상호작용을 통해 로직을 구성하는 프로그래밍 방법 모든 사물은 속성과 기능을 가진 객체임, 프로그래밍에서 객체는 클래스(설계도)에 의해 메모리에 생성된 것을 의미함. 특징 캡슐화 속성과 기능을 하나로 묶어서 필요한 기능을 메서드로 외부에 제공하는 것 (외부에서 사용하지 않는 데이터는 숨긴다) 상속 기존 클래스의 속성과 기능을 새로운 클래스에서 재사용할 수 있도록 물려 받는 것. extends 키워드로 상속 가능 (다중 상속은 불가능) 부모 클래스 : 상속을 통해 자신의 필드 및 메서드를 다른 클래스로 제공 자식 클래스 : 부모 클래스로부터 필드와 메서드를 상속받는 클래스..