목록분류 전체보기 (108)
모눈종이에 사각사각
0. 시작 벌써 마지막 미션이다. 4주가 이렇게 빨리 지나가다니... 이번주 미션은 다리 건너기 미션이었다. 문제를 읽었는데 맞게 이해한건가? 싶던 찰나에 슬랙에 관련 영상을 올려주신 분들이 있어 잘 이해할 수 있었다. 더보기 https://youtu.be/JUrErvCiPDc -> 오징어 게임의 다리 게임(매운맛) https://youtu.be/dAvPLL4y0uE -> 런닝맨의 다리 게임(순한맛) 이번주의 미션은 3주차 미션에 리팩터링이 추가되었다! 3주차에도 일단 작성한 다음에 다 고쳤던 기억이 있었기에 이번에도 비슷하게 진행하려고 했다. 그러나 시작하기 전에 3주차 미션의 코드 리뷰를 통해 부족한 점은 무엇인지, 개선할 점이 있는지 먼저 학습했다. 1. 3주차 코드리뷰 1-1. static 메서드..
구분자 넣기 StringJoiner을 이용하면 쉽게 구분자를 넣을 수 있다. StringJoiner을 생성할 때 구분자를 넣어 생성한 후 add메서드로 삽입한다. StringJoiner stringJoiner = new StringJoiner(" | "); stringJoiner.add("O"); stringJoiner.add(" "); stringJoiner.add("X"); System.out.println(stringJoiner); 출력 O | | X prefix(접두사), suffix(접미사) 넣기 StringJoiner 클래스는 다음과같이 오버로딩 되어있기 때문에 구분자와 함께 접두사와 접미사도 넣어 생성할 수 있다. StringJoiner stringJoiner2 = new StringJoin..
0. 시작 이번 3주차 미션은 정말 코드를 많이 수정했던 한 주였다. 다 작성하고 테스트 코드를 돌렸는데 예상치 못한 곳에서 오류가 발생했고, 이를 해결하려다 보니 전체적인 구조를 바꿔야 했었다. 이번주는 2주차 미션의 목표인 함수 분리와 테스트 작성에 더해서 클래스를 분리하고, 도메인 로직에 대한 단위 테스트를 작성하는 연습을 하는 것이 목표였다. 1. 기능 요구사항 다음은 내가 작성한 구현할 기능 목록이다. 세세하게 조건을 맞춰줘야 하는 부분이 많아서 지난주보다 많아졌다. 2. 프로그래밍 요구사항 위의 사진은 지난주 까지의 요구사항이고, 이번주에는 이렇게 추가된 요구사항이 있었다. Java Enum을 적용해야 했기에 Enum에 대한 공부도 다시 하고, 적용하려 노력했다. 그리고 도메인 로직에 단위 테..
0. 시작 본격적인 미션이 시작된 것 같다고 느낀 한 주였다. 지난주인 1주차의 목표는 Git과 미션 사이클에 익숙해지는 것이 목표였다. 2주차는 아래의 메일 본문 내용의 일부에 나와있듯이, 함수를 분리하고, 함수별로 테스트를 작성하는 것에 익숙해지는 것이 목표였다. 코드를 작성하면서 내가 한 고민사항을 적어보려고 한다. 조금 길어질 수도 있지만, 사고과정 또한 하나의 성장과정이라고 생각해서 기록해두면 좋을 것 같다. 1. 기능 요구사항 2주차 미션은 숫자야구이다. 지난주와 동일하게 진행방식은 기능요구사항, 프로그래밍 요구사항, 과제 요구사항을 다 구현하는 것이었다. 기능을 구현하기 전 기능 목록을 만들고 기능 단위로 커밋을 해야했기에 기능 요구사항을 읽으면서 구현할 기능을 정리했다. 게임 예시를 공책에..
🌙 기본형과 문자열 간의 변환 기본형 \(\rightarrow\) 문자열 문자열 \(\rightarrow\) 기본형 String String.valueOf(boolean b) String String.valueOf(char c) String String.valueOf(int i) String String.valueOf(long l) String String.valueOf(float f) String String.valueOf(double d) boolean Boolean.parseBoolean(String s) byte Byte.parseByte(String s) short Short.parseShort(String s) int Integer.parseInt(String s) long Long.parse..
단위 테스트를 하는 방법을 조금씩 공부를 하고 있던 중, 반환값이 없는, 즉 프린트한 결과값을 통해서는 테스트를 어떻게 하는지 궁금하여 찾아보았다. 내가 하려고 한 테스트는 게임의 상태를 출력하는 것이다. 게임 상태 클래스는 다음과 같다. public class GameState { private int strike; private int ball; public GameState() { this.strike = INITIAL_NUMBER; this.ball = INITIAL_NUMBER; } public void addStrike() { ++strike; } public void addBall() { ++ball; } public int getStrike() { return strike; } public..
[우테코 프리코스 2주차] NsTest 분석에 이어서 테스트코드에서 사용된 Assertions클래스의 메서드를 분석해보려고 한다. 일단 위의 게임종류_후_재시작()부분의 코드를 보면 컴퓨터가 (1, 3, 5)를 생각했을 때 사용자가 "246"을 입력하면 "낫싱"을, "135"를 입력하면 "3스트라이크"를 출력해야 한다는 뜻이며 "1"을 입력하면 재시작하고, 컴퓨터가 (5, 8, 9)를 생각했을 때 사용자가 "297"을 입력하면 "1볼 1스트라이크"을, "289"를 입력하면 "3스트라이크"를 출력해야 한다 그리고 "2"를 입력하면 "게임 종료"를 출력해야 한다는 뜻이다. 예외_테스트()부분은 사용자가 3자리 숫자가 아닌 다른 숫자를 입력했을 때 예외가 발생해야 한다는 것이다. ⚾ assertRandomNu..
2주차에서 우리가 이뤄야할 것들 중 하나가 테스트 코드에 익숙해지고, 테스트 도구를 잘 다루는 것이다. 아직 테스트 코드에 대해 모르는 것이 많아 이 기회에 하나씩 정리해가며 분석해보려고 한다. 2주차의 과제 테스트는 NsTest 클래스의 메서드를 활용해서 진행된다. ⚾ run 메서드 게임종료_후_재시작() 테스트코드를 보면 run()이 들어가있는 것을 확인할 수 있다. run()은 다음과 같이 구현되어 있다. protected final void run(final String... args) { command(args); runMain(); } ⚾ command 메서드 run() 안에 있는 command()은 다음과 같다. private void command(final String... args) {..
🌙 표준 입력 스트림이란? System.setIn에 대해 조사하다가 표준입력스트림(standard input stream)이라는 단어가 나왔다. 여기서 "표준"이 의미하는 것이 무엇인지 궁금해졌다. 먼저 스트림에 대해 알아보도록 하자. 스트림(Stream) 자바에서 입출력을 수행하려면, 즉 어느 한쪽에서 다른 쪽으로 데이터를 전달하려면, 두 대상을 연결하고 데이터를 전송할 수 있는 무언가가 필요한데 이를 스트림이라고 한다. 스트림(stream) : 프로그램을 드나드는 데이터를 바이트의 흐름으로(byte stream) 표현한 단어 스트림은 단방향통신만 가능하기 때문에 하나의 스트림으로 입력과 출력을 동시에 처리할 수 없다. 따라서 입출력을 동시에 하려면 입력 스트림(input stream)과 출력 스트림(..
우아한테스코스의 4주간의 프리코스 기간이 시작됐다. 앞으로 4주동안 공부한 내용을 꾸준히 기록해보려고 한다. 🍁 진행 방식 미션은 기능 요구 사항, 프로그래밍 요구 사항, 과제 진행 요구 사항 세 가지로 구성되어 있다. 세 개의 요구 사항을 만족하기 위해 노력한다. 특히 기능을 구현하기 전에 기능 목록을 만들고, 기능 단위로 커밋 하는 방식으로 진행한다. 기능 요구 사항에 기재되지 않은 내용은 스스로 판단하여 구현한다 문제는 총 7문제이다. 🍁 미션 문제1 ## 🚩 구현할 기능 목록 - [x] 페이지 번호 각 자리 모두 더하기 - [x] 페이지 번호 각 자리 모두 곱하기 - [x] 나올 수 있는 4가지의 수 중 가장 큰 수 구하기 - [x] 시작면이나 마지막 면이 나오면 에러 처리하기 - [x] 왼쪽 페..