분류 전체보기215 백준 5397: 키로거(java) 문제풀이 비밀번호와 커서의 이동을 각각 표현할 2개의 스택(password, arrow)을 사용해 풀이한다. '-'를 입력받을 경우 password가 공백 상태가 아니라면 pop하여 커서의 바로 앞 글자를 지우고, ''가 입력되면 password에서 요소를 pop해 arrow에 push하거나 그 반대의 작업을 수행한다.char c=pw[j];switch(c) { case '-': if(!password.isEmpty()) password.pop(); break; case '': if(!arrow.isEmpty()) password.push(arrow.pop()); break; default: password.push(c); break;}switch문을 사용하였으나 if문으로 구현해도.. 2024. 8. 7. 백준 1302: 베스트셀러(java) 문제풀이 제목과 해당하는 판매 횟수를 대응시켜야 하므로 HashMap를 사용하였으며, 풀이 과정은 크게 아래 3단계와 같다.제목을 입력받아 처음 등장하는 제목일 경우 을 put하고 이전에 등장한 적 있는 제목일 경우 을 put판매 횟수가 가장 많은 책들을 별도의 리스트에 저장2번의 리스트를 알파벳 순으로 정렬하여 첫 번째 요소를 출력int max=0;for(int i=0; i getOrDefault() 메소드를 이용해 해시맵에 str이 존재할 경우 str에 대응하는 value를 호출하여 1을 더하고, 없을 경우 default값인 0을 호출하여 1을 더한다(=1 삽입).Math.max() 메소드를 이용해 해시맵 내 value들을 그때그때 비교하여 최대 판매 횟수를 max에 저장하고,List maxKeys=.. 2024. 8. 7. 백준 1065: 한수(java) 문제풀이 N이 1부터 1000까지로 한정되기 때문에 매우 간단하게 풀이할 수 있다. N이 한 자리 수이거나 두 자리 수일 때는 무조건 한수이고 1000일 때는 한수가 아니므로 N이 세 자리 수인 경우만 고려하면 된다.if(N의 길이가 3){ if(N[2]-N[1]==N[1]-N[0]) N=한수}N이 세 자리 수일 때 한수인지 아닌지 판단하는 알고리즘을 간단히 작성하면 위와 같다. 전체 코드import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int N=scanner.nextInt(); boolean[] arr=new.. 2024. 8. 2. 백준 1935: 후위 표기식 2(java) 문제풀이 스택을 사용하면 쉽게 해결할 수 있는 문제다. 입력된 수식을 스캔하며 숫자가 나오면 스택에 push하고, 연산자가 나오면 pop하여 가장 최근에 삽입된 두 숫자로 해당 연산을 수행한 뒤 그 결과를 다시 스택에 push하면 된다.스택으로 후위 표기 수식 계산 참고 스택의 응용: 후위 표기 수식 계산중위(infix): 연산자가 피연산자 사이에후위(postfix): 연산자가 피연산자 뒤에전위(prefix): 연산자가 피연산자 앞에인간은 주로 중위표기법을 사용하지만 컴파일러는 후위표기법을 사용한다. 프로sysouthelloworld.tistory.com(위 게시글은 C를 기준으로 작성되었지만 알고리즘은 동일하다) 이번에 처리할 문자 ch에 대한 switch문을 사용한다. ch가 +, -, *, /일 때.. 2024. 7. 25. 백준 17413: 단어 뒤집기 2(java) 문제풀이 입력받은 문자열을 뒤집어야 하므로 스택을 이용해 풀이한다. 스택은 후입선출(FIFO) 구조이므로 먼저 입력되어 먼저 삽입된 값이 나중에 출력된다. for문과 charAt() 메소드를 이용해 한 문자씩 처리할 것이므로 Character가 삽입되는 스택을 선언하고, StringBuilder를 사용해 한 번에 출력한다. 이때 처리할 문자 ch의 위치에 따라 처리 방식을 다르게 해야 한다.ch가 괄호 바깥에 있는 경우: 바깥의 값은 뒤집어야 하므로 append하기 전에 스택을 거쳐야 한다.ch가 괄호 안에 있는 경우: 안의 값은 그대로 출력해야 하므로 바로 append한다.boolean flag=true; //true면 뒤집고 false면 그대로1, 2번 케이스 중 어떤 방식으로 처리할지 결정하기.. 2024. 7. 24. 백준 11478: 서로 다른 부분 문자열의 개수(java) 문제풀이 별도의 부분 문자열 생성 메소드를 작성하지 않고, String 클래스의 substring 메소드를 이용하였다.시작 인덱스와 끝 인덱스를 입력하면 해당하는 범위의 부분 문자열을 반환하므로, 이중 for문을 이용해 인덱스를 구한다. beginIndex 이상, endIndex 미만의 범위임에 주의해야 한다.for(int i=0; i전체 문자열의 길이가 n일 때, 1부터 n의 길이를 가진 n종류의 부분 문자열을 생성할 수 있으므로 바깥쪽 for문은 n번 반복되도록 한다.for(int i=0; i길이가 i인 부분 문자열을 모두 구하려면 substring(0, i+1)부터 beginIndex와 endIndex를 1씩 증가시키며 반복해야 하므로 위와 같이 작성할 수 있다. 이때 서로 다른 부분 문자열만을 카.. 2024. 7. 24. 이전 1 ··· 11 12 13 14 15 16 17 ··· 36 다음