JAVA(자바) 단위 테스트 실습 - 문자열 계산기
2021. 9. 3. 16:52
JAVA with TDD, Clean Code
이 글은 자바지기(박재성)님의 강의를 개인적인 공부를 위해 정리한 글입니다. 우아한테크세미나_TDD 리팩토링 📖 단위 테스트 실습 - 문자열 계산기 다음 요구사항을 JUnit을 활용해 단위 테스트 코드를 추가해 구현한다. 기능 요구사항 사용자가 입력한 문자열 값에 따라 사칙연산을 수행할 수 있는 계산기를 구현해야 한다. 문자열 계산기는 사칙연산의 계산 우선순위가 아닌 입력 값에 따라 계산 순서가 결정된다. 즉, 수학에서는 곱셈, 나눗셈이 덧셈, 뺄셈보다 먼저 계산해야 하지만 이를 무시한다. 예를 들어 "2 + 3 * 4 / 2"와 같은 문자열을 입력할 경우 2 + 3 * 4 / 2 실행 결과인 10을 출력해야 한다. 계산기(사칙연산) 부분 구현 public int add(int a, int b){ ret..
익명 클래스(Anonymous class)
2021. 9. 3. 11:25
JAVA
익명 클래스 익명 클래스(anonymous class)란 다른 내부 클래스와 달리 이름을 가지지 않는 클래스를 의미한다. 익명 클래스는 클래스의 선언과 동시에 객체를 생성하므로, 단 하나의 객체만을 생성하는 일회용 클래스이다. 따라서 생성자를 선언할 수도 없으며, 오로지 단 하나의 클래스나 단 하나의 인터페이스를 상속받거나 구현할 수 있을 뿐이다. 이러한 익명 클래스는 매우 제한적인 용도에 사용되며, 구현해야 하는 메소드가 매우 적은 클래스를 구현할 때 주로 사용된다. 다음 코드는 자바의 윈도우 프로그래밍을 할 때 사용되는 AWT코드의 일부이다. 익명 클래스를 사용하지 않은 경우 import java.awt.*; import java.awt.event.*; public class AWT { public ..
리트코드(LeetCode) 937번 로그 파일 재정렬(Reorder Data in Log Files)
2021. 9. 2. 11:27
Algorithm
이 문제의 조건을 요약하자면 로그의 가장 앞 부부분은 식별자이다. 문자로 구성된 로그가 숫자 로그보다 앞에 온다. 식별자는 순서에 영향을 끼치지 않지만, 문자가 동일할 경우 식별자 순으로 한다. 숫자 로그는 입력 순서대로 한다. 📌 풀이 문제에서 문자로 구성된 로그가 숫자보다 앞에 온다 했으니 우선 문자로 구성된 로그와 숫자로 구성된 로그를 분리해서 각 리스트에 저장하는 작업이 필요하다. (추후에 숫자로 구성된 로그는 + 를 이용해 이어 붙여 주기만 하면 된다.) 문자로 구성되있는지를 확인하기 위해 isdigit( )을 사용하여 준다. isdigit( )은 문자열이 숫자인지를 확인해서 boolean값을 return해주는 메소드이다. letters, digits = [], [] for log in logs..
리트코드(LeetCode) 125번 Valid Palindrome (유효한 팬린드롬)
2021. 8. 31. 17:12
Algorithm
Palindrome(팰린드롬) 이란 무엇일까? 팬린드롬이란 앞뒤가 똑같은 단어나 문장으로, 뒤집어도 같은 말이 되는 단어 또는 문장이다 예를 들어 '토마토' 'level' 같은 단어들이 팬린드롬이라 할 수 있다. 이 문제는 주어진 문자열이 팰린드롬인지 확인하는 문제이다. 대소문자는 구분하지 않으며, 영문자와 숫자만을 대상으로 한다. 📌 첫번째 풀이 : 리스트로 변환 직접 문자열을 받아 단어가 영문자 또는 숫자인지 확인한다 (특수문자인 것을 거르기 위한 작업) strs = [] for char in s: if char.isalnum(): strs.append(char.lower()) 여기서 isalnum( ) 메소드는 영문자, 숫자 여부를 판별하는 함수로, 이를 이용해 해당하는 문자만을 strs리스트에 추..
업 캐스팅(Up Casting)
2021. 8. 31. 11:11
JAVA
캐스팅(Casting)이란? 캐스팅이란 형변환이라고도 하며 타입을 변환하는 것을 말한다. 자바의 상속관계에 있는 부모와 자식클래스 간에는 서로 형변환이 가능하다. 부모 클래스인 상속 관계의 상위 클래스를 수퍼 클래스, 그리고 자식 클래스인 하위 클래스를 서브 클래스라고 정의한다. 업캐스팅(Up Casting)이란? 업 캐스팅이란, 자식 객체를 부모의 타입으로 해석하는 것이다. 예를 들어 아래와 같은 상속 관계가 있을 때, class Animal { ... } class Cat extends Animal { ... } class Dog extends Animal { ... } class Horse extends Animal { ... } Cat의 인스턴스(객체)는, Animal로 해석 될 수 있다. // ..