java 205

14425. 문자열 집합 (자바, Java)

앞선 문제와 유사한데, 이번엔 숫자가 아닌 문자열로 바뀌었습니다. 이전에 정렬문제에서, 람다식으로 변환하는 문제를 풀면서 알게된 compareto 매소드 콜을 사용하여 풀었습니다. 그리고 앞 문제의 이진탐색 개념을 콜라보하여서 풀게되었고, 뭔가 개념이 장착된 기분이라 풀고서 아주 기분이 좋았습니다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.StringTokenizer; public class Main { static int count; public static void main(String[] args) t..

백준 문제풀이 2022.10.03

10815. 숫자 카드 (자바, Java)

마참내!! 진도를 다 따라잡았습니다. 원래 블로그 운영 이전에 문제부터 풀기 시작했고, 업로드 해볼까 싶었을때는 푼 문제가 많은 상태여서, 평일에는 여유가 없다보니 주말에 틈틈이 올렸습니다. 그러다가 추석 연휴때 왕창 업로드했고, 드디어 다 올렸네요. 단계별로 풀고있긴합니다만, 너무 어려운 경우는 넘길수도 있어서, 앞으로는 푸는대로 업로드하겠습니다. 이진탐색, 이분탐색 (Binary Search)에 관련된 문제입니다. 이전 단계였던 브루트 포스방법으로 풀면, 시간초과가 되버리지요. 관련 내용에 대해 더 알고싶다면, 링크를 참조하세요. https://namu.wiki/w/%EC%9D%B4%EC%A7%84%20%ED%83%90%EC%83%89 이진 탐색 - 나무위키 이 저작물은 CC BY-NC-SA 2.0 ..

백준 문제풀이 2022.10.03

1436. 영화감독 숌 (자바, Java)

처음에 좀 막막했는데, String을 이용해 쉽게 풀었다. String으로 '666'이 포함되는 수를 작은 수부터 검사하여, n과 같은 순번일때 반복문을 빠져나와 출력하는 식. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt..

백준 문제풀이 2022.10.02

1018. 체스판 다시 칠하기 (자바, Java)

문제는 이해가 갔는데, 풀려니까 막상 난감했다. 처음에는 상하좌우 값을 대조하는 쪽으로 가려고 했는데, 그러면 바깥 테두리 부분에 있는 문자들을 비교하기가 힘들었다. 결국 정답을 보려고 했는데, 거기서 얻은 힌트들로 갑자기 아이디어가 떠올라 풀 수 있었다. 어쩌다보니 오중구문이 되버림... import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws NumberFormatException, IOException { Buffe..

백준 문제풀이 2022.10.02

7568. 덩치 (자바, Java)

간단하다. 두가지 지표가 전부 밀리면 순위가 밀리는 셈이다. 초기 랭크 배열을 1로 놓고, 다른 사람과 비교해서 자신이 밀리면 숫자를 올려주면 된다. 자신이 앞서면 다른사람 랭크를 올려준다. 끝. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n =..

백준 문제풀이 2022.10.02

2231. 분해합 (자바, Java)

분해합은 구하기 매우 쉬운데, 생성자는 딱 찝어내기가 힘들다. 다만, 규칙상 분해합은 생성자보다 크다. (분해합=생성자+생성자의 각 자릿수이기 때문) 따라서, 자신보다 작은 숫자들의 분해합을 생성한 뒤, 그것들을 일일히 대조하면 된다. '가장 작은 생성자'를 구해야 하므로, 작은 수부터 구하다가 발견시 break 로 멈춰주면 된다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; public class Main { public static void main(String[] args) throws IOException { BufferedRe..

백준 문제풀이 2022.10.02

2798. 블랙잭 (자바, Java)

브루트 포스란 난폭한 힘, 키 전수조사를 의미한다. 시간복잡도고 뭐고 빠져나갈 수 없는 전수조사를 통해 문제를 해결해나가는 방식. 이중구문 등을 활용하여 문제를 해결해보자. 개인적으로 단계가 좀 잘못됐다고 생각한다. 시간복잡도와 효율을 고려해야하는 정렬 등의 문제가 더 뒤에나와야 할 것 같은데... 어쨌거나 브루트 포스 방식을 익힐때는 '효율보다는 클리어 그 자체' 에 두는 경우라 봐야할 것이다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.StringTokenizer; public class Main {..

백준 문제풀이 2022.10.02

11729. 하노이 탑 이동 순서 (자바, Java)

감회가 새로웠다. 고등학교때 지수함수 파트 끝부분에 간략히 언급되었던 하노이의 탑이었다. 여기서 다시 만나다니... 처음에는 감도 안 잡혀서 포기했다가, 별찍기로 재귀함수를 다시 익히게 된 후 다시 풀어서 맞았다. 원리는 생각보다 단순하다. 총 옮긴 횟수 K는 n=1일때 1, n=2일때 3, n=3일때 7...해서 2^n-1이 된다. 직관적으로 와닿지 않는다면, 계차수열로 풀어보면 된다. n에 따른 K값을 나타내는 수열 n번째 항 = 초항 + 계차수열의 n-1번째항까지의 합이다. 계차수열은 초항이 1이고 공비가 2인 등비수열이므로 계차수열 bn=2^(n-1)이 되고, 등비수열 합공식을 이용하면 된다. 나중에 수학공식 태그를 추가한뒤에 해야겠다..일단 본문보다 길어져서 생략. 아무튼간에 결론만 말하면, n..

백준 문제풀이 2022.10.02

2448. 별 찍기 - 11 (자바, Java)

단계별 풀이에 있는 문제는 아니었지만, 저번 문제를 거의 베끼다시피했기 때문에, 제대로 이해했나 확인하기 위해 비슷한 난이도와 패턴의 문제를 풀어보았다. 차분하게 설계하면 쉬운데, 그냥 화면을 쳐다보며 생각한게 패인이라 여겼기에, 이번엔 종이와 펜을 들고 설계하였다. 그 결과 성공!! 덕분에 재귀에 대한 자신감을 얻을 수 있었다. 자세한 설명을 위해서는 그림자료가 좀 필요한데, 편집에는 자신이 없어서...그냥 말로 대충 떄워본다면, n은 세로의 줄 수를 의미한다. 첫 세줄에 있는 삼각형의 패턴이, 높이가 2배씩 늘어날수록 반복되는 전형적인 재귀함수의 형태를 띈다. 앞선 문제에서는 초기값을 n=1로 설정했으나, 이번 문제에서는 그렇게 풀기엔 좀 복잡한 모양이라 생각해서, n=3으로 설정하여 세줄짜리 삼각형..

백준 문제풀이 2022.10.01

2447. 별 찍기 - 10 (자바, Java)

Star wars가 재귀와 함께 화려하게 부활했다. 아이디어는 얻었지만, 손쉬운 재귀만 풀다가 어려운 문제를 만나 힘들기도 했고, 그래서 그냥 남의 코드를 보고 이해하며 풀었다. 평소에 보던 블로그 외에도 다른 사람들의 풀이를 많이 대조했는데, 대부분 처음부터 이중구문을 돌려 빈칸을 만든뒤 풀었기에 연산이 쓸데없이 많아진다 판단하여 원래 보던 이방인님 블로그를 베꼈다. https://st-lab.tistory.com/95 [백준] 2447번 : 별 찍기 - 10 - JAVA [자바] www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. ..

백준 문제풀이 2022.10.01