10431번: 줄세우기 문제 해석 애들의 키를 오름 차순으로 만들면 된다. 내 앞 숫자가 나보다 크다면 앞으로 가고 작다면 가만히 있으면 된다. 이때 내가 앞으로 가야한다면 나보다 큰 애들은 한발자국씩 뒤로 움직여야할테니 그 숫자를 체킹해야한다. 접근 간단하다, 해당 숫자와 배열에 미리 들어가있는 숫자들을 비교해서 해당 숫자보다 큰 수만큼 +해주면 된다. 대충 코드를 짜보면 int[] h = new int[20]; for (int i = 0; i h[i]) { ans++; } } } 이런식으..
전체 글
이로운 개발자가 꿈인 사람1236번: 성 지키기 문제 해석 영식이는 직사각형 모양의 성을 가지고있고 경비원을 알맞게 배치해서 영식이를 만족시켜야함 영식이를 만족시키는 방법은 경비원을 모든 행과 열에 경비원을 최소 한명씩은 배치 시켜야함 접근 예제1에서는 모든 행과 열에 경비원이 있어야함. 즉 대각선에 있으면 됨.(따로따로 배치해도 되긴함) 단, 모든 행과 열을 커버하려면 현재 경비원이 있는 행과 열을 제외하고 경비원이 들어가야함 이말은 색칠을 싹싹 하고 남은 칸에 경비원을 배치해야함(표를 그려보면 된다) 각 행과 열에 경비원이 있나? 보호받지 못하는 행열의 개수를 구한다 둘 중 큰 값을 출력힌다. 풀이 1. 행과 열을 따로따로 계산한 버전 package learnString; import java.util.Scanner; cla..
13223번: 소금 폭탄 문제 해석 소금팔에 시간을 입력해야함. 첫째줄에는 현재시각이 나오고 둘째줄에는 소금 투하시간이 나옴 즉 두 시간의 차이를 구하는 문제임 예시 20시와 04시의 시간 차이는 8시간 12:34:56 과 14:36:22 시간차이는 2시간 1분 26초 차이 접근법 시간을 입력받는다 : 문자를 기준으로 시간, 분, 초를 쪼갠다. 입력받은 두개의 시간을 비교한다. 두개의 시간, 분, 초의 차이를 비교한다 구해진 시간을 HH:MM:SS 형태로 출력한다 1. 시간을 입력받는다 일단 시간을 쪼개는거부터 난관인데 몇가지 방법이 있을 것 같다. 일단 “:” 가 포함되어 있기 때문에 무조건 문자로 받아야한다. 그 다음 세가지 방법이 있다. 그냥 냅다 반복문을 돈다. subString() 함수를 사용하..
1543번: 문서 검색 해석 주어진 단어가 문서에 등장하는 횟수를 구해라 접근 문서의 첫 글자부터 순회 문서의 지금 글자부터 주어진 단어와 한글자씩 비교 단어와 완전히 일치하면 개수를 올린다. 해당 단어가 등장한 이후부터 2를 반복 단어와 매치되지 않았다면 단어와 매칭되지 않았다면 다음 글자에서 2를 반복 IndexOf() 함수를 사용하면 더 쉽게 풀 수 있을 듯 하다 주의점 공백을 포함한 것을 입력받아야한다! sc.next(); 이거는 공백이 있다면 슬라이싱 해버린다! String doc = sc.nextLine(); 이렇게 받아야한다 풀이 package learnString; import java.util.Scanner; class Main { public static void main (String..
보호되어 있는 글입니다.
Junit5 어노테이션 @Test 테스트 메서드임을 선언함 @ParameterizedTest 파라미터를 받을 수 있는 테스트를 작성할 수 있음 @RepeatedTest 반복되는 테스트를 작성할 수 있음 @DisplayName 테스트 메소드의 이름을 직접 정의할 수 있음 @BeforeEach 각 테스트 실행 전에 실행됨 @AfterEach 각테스트 실행 후에 실행됨 @Disabled 테스트를 무시함 기본 테스트 작성 더하기 기능 테스트 하기 package com.example.bootstudy.java; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class CalculatorTest { @Test ..
1157번: 단어 공부 문제 해석 Mississipi 이런 예제가 있을 때 i는 4개, s도 4개로 가장 많이 사용한 알파벳이 여러개 존재하기 때문에 ?를 출력 zZa 이 예제는 대소문자를 구분하지 않기 때문에 Z를 출력 나머지 예제들도 비슷하지만 주의점이 소문자가 많이 반복되어도 출력은 항상 대문자로 해야한다. 접근 문자열에서 가장 많이 등장한 알파벳 찾기(대소문자 구분 x) 각 알파벳의 개수를 구한다 그 중 최댓값을 구한다. 풀이 아마 키 포인트는 대소문자를 구분하지 않는다는 것과 가장 많이 나온 알파벳의 갯수가 중복된다면 ‘?’를 출력시켜야 하는 것일듯 하다. package learnString; import java.util.Scanner; class Main { public static int[..
단위테스트란? 고전파 모든 사람이 다누이 테스트와 테스트 주도 개발에 원론적으로 접근 런던파 런던의 프로그래밍 커뮤니티에서 시작 단위테스트 특징 작은 코드 조각을 검증 빠르게 수행 격리된 방식으로 처리하는 자동화된 테스트 격리된 방식에 대한 접근법이 런던파와 고전파가 다르다. 테스트 코드 작성 예시 비즈니스 로직 고객은 제품을 구매할 수 있다. 재고가 충분하다 구매가 성공한다 제품의 재고가 1개 줄어든다 재고가 부족하다 구매 실패한다. 어떠한 액션도 발생하면 안된다. 고전파 테스트 코드 구매 성공 public void purchase_success_when_enough_inventory(){ //given Store store = new Store() // 상점 생성 store.addInventory("..