반응형
전체 글

전체 글

    [BOJ][Java] 15650번 - N과 M (2)

    문제 백준 15649번 문제: N과 M (2) N과 M 시리즈 문제 해설 보러가기 [BOJ][Java] 15649번 - N과 M (1) [BOJ][Java] 15650번 - N과 M (2) [BOJ][Java] 15651번 - N과 M (3) [BOJ][Java] 15652번 - N과 M (4) 문제 설명 15650번 문제에서 오름차순 조건이 추가된 문제이다. 수열의 첫 번째 수일 때 수열의 이전 수가 현재 수보다 작을 때 위의 두 가지 경우에만 재귀함수를 불러올 수 있도록 if문으로 조건문을 추가해 주었다. if (i == 0 || arr[i-1] < j) dfs(n, m, i+1);성공 코드 import java.util.Scanner; public class Main { static int[] ar..

    [BOJ][Java] 2441번 - 별 찍기 - 4

    문제 백준 2441번 문제: 별 찍기 - 4 문제 설명 첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 오른쪽 정렬로 찍는 문제 [BOJ][Java] 2440번 - 별 찍기 - 3 문제에서 별을 찍는 횟수를 N에서 뺀 개수만큼 공백이 출력되는 반복문을 추가하면 된다. 성공 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.close(); for (int i = 1; i

    [BOJ][Java] 2440번 - 별 찍기 - 3

    문제 백준 2440번 문제: 별 찍기 - 3 문제 설명 첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 이중 반복문을 통해 해결할 수 있다. 성공 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); sc.close(); while (n > 0) { for (int i = n; i > 0; i--) { System.out.print("*"); } System.out.println(); n--; } } }

    [BOJ][Java] 15649번 - N과 M (1)

    [BOJ][Java] 15649번 - N과 M (1)

    문제 백준 15649번 문제: N과 M (1) N과 M 시리즈 문제 해설 보러가기 [BOJ][Java] 15649번 - N과 M (1) [BOJ][Java] 15650번 - N과 M (2) [BOJ][Java] 15651번 - N과 M (3) [BOJ][Java] 15652번 - N과 M (4) 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 문제 설명 DFS(깊이 우선 탐색)를 사용해 백트래킹을 진행했다. DFS: 루트 노드(혹은 다른 임의의 노드)에서 시작해서 다음 분기(branch)로 넘어가기 전에 해당 분기를 완벽하게 탐색하는 방법, 대표적인 완전 탐색 방법, DFS 는 모든곳을 ..

    [BOJ][Java] 10814번 - 나이순 정렬

    문제 백준 10814번 문제: 나이순 정렬 문제 & 코드 설명 정렬 조건 1) 나이 2) 가입 순서 여기서 주의해야 할 점은 가입 순서이다. HashMap은 순서가 보장되지 않기 때문에 입력한대로 저장하기 위해서 이중 배열을 사용했다. 그리고 Arrays.sort에 Comparator를 사용해 나이를 기준으로 정렬했다. 가입 순서는 처음 입력한 순서만 유지되면 되므로 따로 순서를 저장할 필요는 없었다. 성공 코드 import java.util.Arrays; import java.util.Comparator; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner..

    [BOJ][Java] 1181번 - 단어 정렬

    문제 백준 1181번 문제: 단어 정렬 문제 설명 길이가 짧은 것부터 길이가 같으면 사전 순으로 정렬하고, 같은 단어는 한 번만 출력하는 문제 코드 풀이 1) HashMap에 단어들을 담는다. (words) 2) LinkedList에 HashMap의 메소드 중 하나인 entrySet을 사용해 key와 value를 모두 LinkedList로 넣는다. 여기서 entrySet에 의해 중복값이 걸러진다. - 여기서 LinkedList를 사용하는 이유는 HashMap은 순서가 보장되지 않기 때문에 순서를 유지시키기 위해서이다. 3) Collections.sort에서 Comparator를 사용해 우선순위에 따라 다르게 정렬되도록 한다. - 여기서 key는 문자열, value는 문자열의 길이이다. - 따라서 valu..

    [BOJ][Java] 1032번 - 명령 프롬프트

    문제 백준 1032번 문제: 명령 프롬프트 문제 설명 n개의 파일명을 입력받아 중복되지 않은 파일명의 부분을 ?로 출력하는 문제 처음에 문제를 제대로 안읽어서 파일명이 3개만 입력되는줄알고 하드코딩을 했다가 틀렸다ㅠ 제한시간이 2초라서 처음 입력된 값에 차례대로 하나씩 비교하게끔 했다. 일반 String으로 값을 받으면 값을 중간에 바꾸기가 번거로워서 StringBuilder를 사용해서 다른 값이 나오면 setCharAt()을 이용해 ?로 바꿔 주었다. 성공 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.n..

    [BOJ][Java] 1100번 - 하얀 칸

    문제 백준 1100번 문제: 하얀 칸 문제 설명 가장 위의 칸(0,0)이 하얀색이고, 하얀색은 검정색과 번갈아가며 칠해진다면, 하얀색 위에 있는 F는 몇 개일지 구하는 문제 하얀색 말의 조건 홀수번재 열일 때 홀수번째 행 짝수번째 열일 때 짝수번째 열 조건이 위와 같기 때문에 하얀색 말의 행열 번호의 합은 언제나 짝수이다. 이를 이용해 풀어도 된다. 나는 그냥 위의 조건을 if문과 for문을 활용해서 풀었다. 위 조건일 때 F가 등장하면 1씩 증가하게끔 해줬다. 성공 코드 import java.util.Scanner; public class BOJ1100 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Stri..

    [BOJ][Java] 2902번 - KMP는 왜 KMP일까?

    문제 백준 2902번 문제: KMP는 왜 KMP일까? 문제 설명 입력된 이름들의 첫 글자만 모아서 출력하는 문제 이름이 -로 구문되어 있으므로 입력받으면서 split("-")을 이용해 배열에 저장한다. 그리고 각각의 요소마다 첫 글자만 String으로 누적해서 저장하고 최종 값을 출력한다. 성공 코드 import java.util.Scanner; public class BOJ2902 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String[] longName = sc.next().split("-"); sc.close(); String answer = ""; for (String name : longName)..

    [BOJ][Java] 10808번 - 알파벳 개수

    문제 백준 10808번 문제: 알파벳 개수 문제 설명 입력한 단어의 알파벳 개수를 각각 출력하는 문제. 알파벳 개수를 a부터 z까지 저장하는 26개 크기의 배열을 만든다. a가 아스키코드 번호 97이므로 0번부터 a, b, c,... 순서대로 저장하기 위해 for문을 돌며 97을 빼서 카운트한다. 처음 만든 배열을 출력하면 끝이다. 성공 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.next(); sc.close(); int alpha[] = new int[26]; for (int i = 0; i < ..

    [BOJ][Java] 2743번 - 단어 길이 재기

    문제 백준 2743번 문제: 단어 길이 재기 문제 설명 단어가 몇 글자인지 출력하는 문제 length() 를 이용해 입력 글자의 길이를 출력하면 된다. 성공 코드 import java.util.Scanner; public class BOJ2743 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print(sc.next().length()); sc.close(); } }

    [BOJ][Java] 1475번 - 방 번호

    문제 백준 1475번 문제: 방 번호 문제 설명 방 번호를 카드로 붙이려고 할 때 0부터 9까지 카드 세트가 몇 세트 필요할지 계산하는 문제 6과 9는 서로 뒤집어서 사용할 수 있기 때문에 입력할 때부터 9를 6이라고 대체시켰다. 따라서 9가 입력되도 6이고, 6은 한 세트로 2번까지 사용할 수 있다. 0부터 9까지인데, 9는 6이랑 같으므로 크기가 9인 배열을 만들어 번호마다 카운트를 해 준다. 여기서 6번 카드만 2번까지 사용할 수 있으므로 6번 카드가 홀수번 등장하면 나누기 2 한 값에 1을 추가해 세트를 올바르게 추가할 수 있도록 한다. 그리고 마지막에 정렬을 하는데, 정렬을 하는 이유는 가장 큰 값이 세트의 개수이기 때문이다. 나는 오름차순을 시켜서 제일 마지막 인덱스의 값을 출력하도록 했다. ..

    [BOJ][Java] 2941번 - 크로아티아 알파벳

    문제 백준 2941번 문제: 크로아티아 알파벳 문제 설명 문제에 제시된 크로아티아 알파벳 표를 이용해 입력된 단어의 크로아티아 알파벳 개수를 찾는 문제. 크로아티아 알파벳이 3글자로 표현되는 경우도 있어서 표의 크로아티아 글자 배열을 따로 만들었다. 크로아티아 배열을 활용해 for문을 돌며 contains()를 사용해 문자열에 크로아티아어가 존재하면 임의의 문자열인 1로 바꿔주었다. 단순히 크로아티아어 한글자의 의미이기 때문에 한 글자라면 어떤 문자도 상관 없다. for문이 끝나면 최종 문자열의 길이를 출력하면 된다. 성공 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc =..

    [BOJ][Java] 1316번 - 그룹 단어 체커

    문제 백준 1316번 문제: 그룹 단어 체커 문제 설명 입력받은 문자들의 그룹 단어 개수를 계산해 줘야 하는 문제 이전에 방문 여부를 저장하기 위해 크기가 26인 boolean 배열을 이용한다. 입력받은 문자열의 길이만큼 for문을 돈다. 이전 문자와 같지 않은 문자가 등장했는데, 방문했던 문자라면 그룹단어가 아니다. 그룹단어가 아니면 처음 입력받은 개수에서 1씩 빠지기 때문에 결과적으로 그룹단어의 개수가 출력되게 된다. 성공 코드 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); int n = s.nextInt(); int cnt = ..

    IT 트렌드를 꾸준히 접할 수 있는 방법들

    IT 트렌드를 꾸준히 접할 수 있는 방법들

    IT 트렌드를 꾸준하게 알고 있어야 한다고들 한다. 나는 이걸 꾸준히 아는 방법부터 잘 몰랐었다. 그래서 생각난 김에 내가 알게 된 IT 트렌드를 꾸준히 보는 방법들을 소개한다. 추천은 어디까지나 주관적 판단이다. 1) Daily devBlog 구독 추천: ★★★★★ 기술블로그 구독서비스(Daily DevBlog)에서 주사용 이메일 입력해 구독하기 단체 기술블로그의 글과 개인 기술블로그의 글들을 볼 수 있다. 알고리즘 문제 해결 방법부터 시작해서 다양한 기술에 관한 글들이 있으니 관심사에 맞는 글을 골라볼 수 있어 좋다. 2) 스타트업 위클리 구독 추천: ★★★☆☆ Startup Weekly 구독 신청에서 신청하면 스타트업에 관련된 주요 뉴스, 주요 행사에 관한 메일을 월요일 아침마다 받아볼 수 있다. ..