본문 바로가기

문자열74

[자바] 백준 15323 - ZigZag (java) 목차 문제 : boj15323 필요 알고리즘 우선순위 큐 정렬을 통해서도 짤 수 있다. 내 경우에 가장 간단히 짤 수 있는게 우선순위 큐라 생각해서 사용했다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제에서 제시된 조건을 정리해보면 다음과 같다. 1. K개의 문자열을 입력받는다. 2. N개의 문자를 입력받으며 각각에 대해, 입력받은 문자로 시작하는 현재까지 가장 말한 횟수가 적은 문자를 얘기한다. 3. 만약 가장 말한.. 2023. 3. 10.
[자바] 백준 1251 - 단어 나누기 (java) 목차 문제 : boj1251 필요 알고리즘 브루트 포스 3개의 단어로 나눌 수 있는 모든 경우를 확인해서 풀 수 있다. 정렬 사전순으로 가장 앞서는 단어를 알기 위해 문자열에 대해 사전순으로 정렬을 해줘야 한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 단어의 최대 길이는 50이다. 따라서 3개의 단어로 나눌 수 있는 경우의 수는 대략 50x50가지 경우가 존재한다. 따라서 O(N^2)으로, 모든 경우를 다 봐도 풀 수.. 2023. 3. 8.
[자바] 백준 25178 - 두라무리 휴지 (java) 문제 : boj25178 필요 알고리즘 개념 구현, 문자열 문제에 제시된대로 코드를 짤 수 있는 구현력(?)만 있으면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제에서 제시된 '조건'을 모두 파악할 수 있게 짜주면 된다. 이 때 두 문자열을 각각 a와 b라고 부르겠다. 조건을 하나씩 생각해보자. 1. 한 단어를 재배열해 다른 단어를 만들 수 있어야 한다. a와 b 내부에 있는 각 소문자의 갯수가 동일하면 .. 2023. 2. 18.
[자바] 백준 23746 - 문자열 압축 해제 (java) 문제 : boj23746 필요 알고리즘 개념 문자열, 구현 문자열을 다루는 방법을 알아야한다. 로직 자체는 문제에 제시된 그대로 구현만 할 수 있으면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 1. N개의 문자열을 입력받아 저장해둔다. 2. 압축된 문자열을 입력받는다. 3. '1'에서 입력받아둔 문자열을 순회하면서 ('1'에서 입력받을 때 미리 해둬도 된다) ___3.1 'to from' 으로 나눈다. 예를.. 2023. 2. 3.
[자바] 프로그래머스 - 스킬트리 (Lv2, Java) 문제 : Programmers-스킬트리 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 필요 알고리즘 개념 구현, 문자열 문자열을 활용해 문제에서 제시된대로 구현하는 문제이다. 풀이 1 - 쉽게 생각해볼만한 방법! 우선 가장 쉽게 생각해볼 수 있는 방법은, skill_trees[]의 각 문자열에서 skill에 들어있는 문자열을 제외한 나머지를 모두 제거하는 방식이다. 예를들어 '입출력 예'의 경우 다음과 같이 변환한다. (skill = CBD) "BACDE" -> "BCD" "CBADF" -> "CBD" "AECB" -> "CB" "BDA" -> "BD" 그렇게되면 skill이라는 문자열에서 앞에서부터 변환한 문자열이 나온다면 가능.. 2023. 2. 3.
[자바] 백준 2999 - 비밀 이메일 (java) 문제 : boj2999 필요 알고리즘 개념 구현, 문자열 문자열을 파싱해서 문제에서 제시된대로 구현해주는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 1. 우선 R과 C를 구해야 한다. R= 1; i--) if (len%i==0) return i;// 나누어 떨어지는걸 찾을 시 i 리턴 return 0; } 2. 이제 세로로 써져있던걸 가로로 출력해줘야 한다. R과 C를 구했으니 출력은 어렵지 않다. 초기 문자열.. 2023. 1. 27.
[자바] 백준 25841 - Digit Count (java) 문제 : boj25841 필요 알고리즘 개념 문자열, 구현 문자열을 적절히 다뤄서 주어진 조건대로 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 최악의 경우 1000부터 9999까지이고, 각 숫자는 4자리밖에 안된다. 그러므로 1000부터 9999까지 모든 숫자를 보면서 모든 자리수에 대해 확인해봐도 O(9000*4) 면 된다! 1. 시작숫자와 끝 숫자를 입력받고, 카운팅하려는 문자를 받는다. 2. 시작숫자.. 2023. 1. 19.
[자바] 백준 27160 - 할리갈리 (java) 문제 : boj27160 필요 알고리즘 개념 문자열, 구현 문자열을 파싱해 나온대로 구현해주는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 각 과일의 종류별로 입력된 과일의 개수를 모두 더해준다. 과일의 종류별로 봤을 때 더한 값이 5인게 하나라도 있다면 "YES"를 출력해주면 되는 문제이다. 이 때 과일의 종류는 문자열이므로 HashMap로 과일의 종류 문자열을 key, 합산 개수를 value로 하는 Map 자.. 2023. 1. 15.
[자바] 백준 21740 - 도도의 수학놀이 (java) 문제 : boj21740 필요 알고리즘 개념 그리디, 정렬, 문자열 그리디로 풀 수 있는 문제이다. 다만 플래문제답게 세세하게 예외를 생각해봐야하고, 구현이 좀 까다로울 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 사실 이 문제가 플래인 이유는 '단 한 번, 한 수를 두 번 사용할 수 있다.' 이것 때문이다. 아마 저 조건이 없었으면 실버급이었을 것 같다. 그러므로 우선 '단 한 번, 한 수를 두 번 사용할 수 .. 2023. 1. 11.
[자바] 백준 8545 - Zadanie próbne (java) 문제 : boj8545 필요 알고리즘 개념 구현, 문자열 문자열을 입력받아 문제에 제시된 대로 구현하는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문자열을 입력받아 좌우 반전 시킨 문자열을 출력해주면 된다. 자바의 경우 StringBuilder에 reverse라는 기능으로 가능하므로 입력받은 String을 StringBuilder로 변경해주고 reverse()의 결과를 다시 출력해주면 된다. 코드 : githu.. 2022. 12. 21.