본문 바로가기

분류 전체보기984

IntelliJ Test 목록 전체 테스트 진행 시 IDE 내부에서 어떤 테스트가 성공했는지 다음과 같은 화면을 원할 때가 있다. 이를 위해선 다음과 같은 설정이 필요하다. Ctrl + Alt + S를 통해 설정창을 열어준다. Build 시 Gradle이 아닌 IntelliJ IDEA로 변경해 주면 원하는 테스트 목록이 출력될 것이다. 또한 테스트 속도도 더 빠르기 때문에 이를 추천한다. 2023. 7. 4.
JUnit5 @JvmStatic @BeforeAll, @AfterAll 어노테이션은 @Test 메서드가 실행되기 전에 전, 후로 한 번 실행되어야 하는 메서드를 지정하는 데 사용됩니다. 이 메서드는 static이여야 하며, 테스트 클래스 내에서 한 번만 호출됩니다. 그래서 보통 테스트 환경의 초기화나 설정과 같은 작업을 수행하는 데 사용됩니다. 자바가 아닌 코틀린을 이용해 테스트를 작성하기 위해선 다음과 같이 지정해야 합니다. import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.Test import org.junit.jupiter.api.Assertions.* class ExampleTest { companion object { @BeforeAll @JvmStatic.. 2023. 7. 4.
git stash git stash에 대해 알아보기 이전 참고 글을 통해 몇 가지 지식을 얻었다. commit의 단위 commit의 단위에 대한 나만의 기준이 없었다. 오늘 분량을 끝내서 commit을 하거나, 로컬의 변경사항이 급하게 적용되어야 하는 경우 main branch에 병합하기 위해 사용했던 것 같다. git의 Commit의 기준을 논리적 단위라고 했을 때 이 논리적 단위의 자세한 내막은 어떻게 될까? 변경 사항이 특정 작업이나 기능과 관련된 경우, 새로운 작업 및 기능이 추가된 경우 해당 작업이나 기능에 대한 사항을 하나의 commit으로 묶을 수 있습니다. 즉 프로젝트의 기능 단위로 변경사항을 구성하고, 의미 있는 작업 단위로 버전 관리를 할 수 있도록 구성하는 것입니다. 이 기준은 개발팀이 정할 수 있습니.. 2023. 7. 3.
Backing Property 코틀린에서 백킹 프로퍼티는 프로퍼티의 값을 저장하고 가져오기 위해서 내부적으로 사용하는 보조 프로퍼티입니다. 기본적으로 private 한 접근범위를 가지며, 기본값은 동일한 이름의 프로퍼티의 값을 저장하기 위한 필드입니다. 간단한 테스트코드를 작성하는 도중 객체의 값을 확인해야 하는 경우가 생겼습니다. if (calculator.number != 8) { throw IllegalStateException() } 위 코드는 내부 프로퍼티가 외부로 노출되어 에러 발생 여부를 포함하는 구조입니다. 이를 대체하기 위해 data class를 검토해 볼 수 있지만 setter를 포함하고 싶지 않다면 백킹 프로퍼티를 고려해 볼 수 있습니다. class Calculator( private var _number: Int.. 2023. 7. 3.
git commit 되돌리기 Git에서 코드를 수정하고 커밋하여 push 하는 일반적인 절차는 다음과 같습니다: 1. 저장소 복제(Clone): 원격 저장소를 로컬로 복제합니다. 아래 명령어를 사용합니다: git clone 2. 수정: 로컬에서 코드를 수정합니다. 원하는 변경사항을 작성합니다. 3. 변경 내용 확인: 변경된 파일들의 상태를 확인하기 위해 아래 명령어를 사용합니다: git status 4. 스테이징: 수정한 파일들을 스테이징 영역에 추가합니다. 아래 명령어를 사용합니다: git add # 특정 파일 추가 git add . # 모든 수정된 파일 추가 5. 커밋: 스테이징 영역에 추가된 파일들을 커밋합니다. 아래 명령어를 사용합니다: git commit -m "커밋 메시지" 6. 푸시(Push): 커밋한 변경사항을 원격 .. 2023. 7. 3.
ROT13(11655) 알고리즘 문제 푸는 거 생각보다 재밌다. 문제요약 ROT13은 카이사르 암호의 일종으로 영어 알파벳을 13 글자씩 밀어서 만듦. 알파벳은 26자. 암호화하기 위해 13글자를 밀고 복호화를 위해 다시 ROT13을 사용하면 됨. ROT13은 알파벳 대문자와 소문자에만 적용 가능, 알파벳이 아닌 경우 암호화가 되면 안 됨. 입력 첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열(길이는 100을 넘지 않음) 출력 S를 ROT13으로 암호화한 내용을 출력 풀이 우선 문자열을 순회하면서 알파벳 여부를 확인하는 함수가 필요하다. bool isAlphabet(char ch){ return ((ch >= 'a' && ch = 'A' && ch = 'a' && ch = 'A' && ch = 'a' && .. 2023. 7. 2.
농구 경기(1159) 문제 요약 성의 첫 글자가 같은 선수 5명을 선발. 만약 성의 첫 글자가 같은 선수가 5명보다 적다면, 기권. 뽑을 수 있는 성의 첫 글자를 모두 구하기. 입력 선수의 수 : N (1 n; vector names(26, 0); vector result; for(int i=0; i > name; char lastName = name[0]; names[lastName - 'a']++; } for(int i=0; i= 5){ result.push_back(i + 'a'); } } if(result.empty()){ cout name; names[name[0] - 'a']++; } for(int i=0; i= 5){ result += (i + 'a'); } }.. 2023. 7. 2.
Palindrome Palindrome, 한국어로 회문이라는 뜻으로 거꾸로 읽어도 제대로 읽는 것과 같은 문장이나 낱말, 숫자, 물자열 등이다. 보통 낱말 사이에 있는 띄어쓰기나 문장 부호는 무시한다. 입력받은 단어가 팰린드롬인지 아닌지 확인하려면 어떻게 해야 할까? 문자열을 뒤집으면 된다. 이는 실제 구현된 함수를 이용하면 매우 간단하게 구현할 수 있다. #include using namespace std; string str; int main() { cin >> str; auto tmp = str; reverse(tmp.begin(), tmp.end()); if(str == tmp){ cout 2023. 7. 2.
트럭 주차 문제를 해석해 보자. 트럭을 총 세 대 가지고 있고, 한 대 주차 시 분당 A원, 두 대 주차 시 분당 B원, 세 대 주차 시 분당 C원이다. 세 대의 트럭이 고유한 도착 시간과 떠난 시간을 가지고 있다. 트럭이 겹치는 구간에 적용할 비용과 그렇지 않고 독자적으로 주차했을 때 비용들을 구해 합쳐야 한다. 입력의 시간은 1과 100 사이다. 이를 어떻게 효율적으로 저장하고 계산하는 알고리즘을 만들 수 있을까? 1. 주차한 트럭 수만큼 적용될 비용을 저장해야 한다. 분당 요금을 계산하는 과정에서 지속적으로 호출될 가능성이 높다. 이를 체크하고 몇 대면 얼마를 특정 요금을 나타내는 자료구조에 추가하도록 해야 하지 않을까? 2. 분당 요금을 계산하는 경우 해당 시간에 몇 대가 주차되었는지 확인하고 요금을 부과해.. 2023. 7. 1.
문자열 카운팅. 문자열 및 숫자가 입력 값에 대해 몇 개가 존재하는지 검사해야하는 경우 추천하는 자료구조와 선택의 이유는 다음과 같다. 1. 배열 배열은 int 형으로 변환이 가능한 경우 추천한다. 다만 문자열이더라도 아스키 코드로 변환이 가능한 경우에는 배열을 사용하는 것이 유리할 수 있다. 2. Map map 자료구조는 쌍을 이루는 자료구조이다. 이는 String 혹은 입력의 크기가 1000만을 넘어가거나, 각 입력이 10만, 100만 과 같이 순차적으로 분리되어 들어오는 경우 추천한다. 이에 대한 연습 문제로 백준 10808번 문제를 풀어본다. 문제 해석. 문제 : 각 알파벳이 단어에 몇 개 포함되어 있는지 구하는 프로그램 입력은 알파벳 소문자 단어 ( 100을 넘지 않음) 출력은 알파벳 단어에 포함되어 있는 알파.. 2023. 7. 1.