본문 바로가기

Algorithm12

[algorithm] 백준 1822 차집합 ◾문제 차집합 레벨: 실버4 유형: 자료구조 / 정렬 / 해시를 사용한 집합과 맵 / 트리를 사용한 집합과 맵 https://www.acmicpc.net/problem/1822 ◾풀이 TreeSet을 이용하여 풀이하였다. 문제이해 집합 A와 집합B가 주어질 때 집합 상 A - B인 차집합, 즉 A원소에서 B원소와 겹치는 부분을 제외한 부분을 구하는 문제이다. 아래와 같은 부분을 구하는 문제이다. TreeSet 사용하기 집합이므로 중복된 원소를 저장할 필요가 없으므로 Set을 이용하는 것을 생각하게 되었고, HashSet이 아닌 TreeSet을 사용하였다. 왜 TreeSet을 사용하였을까? 이유는 출력 조건에서 "구체적인 원소를 빈 칸을 사이에 두고 증가하는 순서로 출력한다" 라고 하였기 때문이다. Set.. 2024. 2. 11.
[algorithm] hash 백준17219 비밀번호 찾기 ◾문제 비밀번호 찾기 레벨: 실버4 유형: 해시 https://www.acmicpc.net/problem/17219 ◾풀이 해시에 대한 개념을 알고 있다면 어렵지 않게 풀 수 있는 문제이다. 문제이해 문제가 길지만 문제 길이에 비하여 풀이는 간단한 문제이다. 사이트와 비밀번호를 쌍으로 저장하고, 주어지는 사이트들에 대한 비밀번호를 출력하면 된다. HashMap 사용하기 문제에서 사이트 - 비밀번호라는 정보를 '쌍'으로 저장해두고, 사이트가 주어질 때 해당하는 비밀번호를 찾아 출력해주면 된다. 이는 Map을 활용하면 제격이다. Map인터페이스를 구현한 구현체인 hashMap을 활용하여 이 문제를 쉽게 풀 수 있다. Map선언하기 hshMap은 키(key)와 값(value)을 쌍으로 저장하는 자료구조이다. .. 2024. 2. 10.
[algorithm] BFS/DFS 백준1012 유기농배추 ◾문제 유기농 배추 레벨: 실버2 유형: BFS/DFS https://www.acmicpc.net/problem/1012 ◾풀이 전형적인 BFS/DFS 문제이다. 본 글에서는 bfs를 이용하여 풀이하였다. bfs 풀이가 어려운 분들을 위해 자세히 설명하려고 하였는데, 이해가 안 가는 부분이 있다면 댓글로 알려주세요 문제이해 배추는 상하좌우로 인접해 있고, 배추가 인접한 곳에서는 지렁이는 1마리만 필요하다. 즉 떨어져있는 배추들의 묶음이 전체에서 몇 개인지 세면 그것이 곧 필요한 지렁이의 개수가 된다. 배추 밭 배추밭 사이즈와, 배추를 입력 받을 때 주의해야할 것이 있는데 이 문제에서 가로의 길이M, 세로의 길이 N을 알려준다 2차원배열에서 첫번째 항목이 행, 두번째 항목이 열이기 때문에 (arr[row].. 2023. 12. 14.
[algorithm] 정렬 백준 11651 좌표 정렬하기2 ◾문제 좌표 정렬하기 2 레벨: 실버5 https://www.acmicpc.net/problem/11651 ◾풀이 Comparator를 이용한 정렬이 익숙하다면 어렵지 않게 풀 수 있는 문제이다. - 입력받기 N개의 x,y 좌표를 입력받으므로 입력받은 N을 기준으로, Nx2크기의 2차원 배열을 선언하여 입력받는다. int[][] arr = new int[N][2]; - 정렬하기 배열을 정렬하는 것이므로 'Arrays.sort() 를 이용한다.' 라고 생각할 수 있으나 이는 2차원 배열이므로 만일 정렬을 해야한다면 한 행씩 정렬을 해야한다. Arrays.sort()는 직접 2차원 배열을 정렬할 수 없기 때문이다. 그러나 일반적인 오름차순 정렬이 아니기 때문에, 문제에서 요구하는 방식으로 정렬을 해야하므로 .. 2023. 12. 12.
[Java] codeup 1020 2가지 풀이 [기초-입출력] 주민번호 입력받아 형태 바꿔 출력하기 문제 설명 주민번호는 다음과 같이 구성된다. XXXXXX-XXXXXXX 앞의 6자리는 생년월일(yymmdd)이고 뒤 7자리는 성별, 지역, 오류검출코드이다. 주민번호를 입력받아 형태를 바꿔 출력해보자. 풀이 Scanner + System.out.printf() 풀이 코드 길이:328 byte(s) / 수행 시간:177 ms / 메모리 :14352 kb import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String residentNum = sc.next(); String[] resid.. 2023. 5. 4.
[Java] codeup 1019 [기초-입출력] 연월일 입력받아 그대로 출력하기 문제 설명 년, 월, 일을 입력받아 지정된 형식으로 출력하는 연습을 해보자. 입력 연, 월, 일이 ".(닷)"으로 구분되어 입력된다. ex) 2013.8.5 출력 입력받은 연, 월, 일을 yyyy.mm.dd 형식으로 출력한다. (%02d를 사용하면 2칸을 사용해 출력하는데, 한 자리 수인 경우 앞에 0을 붙여 출력한다.) ex)2013.08.05 풀이 이 문제의 풀이 포인트는 다음과 같다. 1. 문자열.split() 메서드 split()는 이전 포스팅 codeup1018에서 다루었다. https://dani0312.tistory.com/11 [Java] codeup 1018 [기초-입출력] 시간 입력받아 그대로 출력하기 문제 설명 어떤 형식에 맞추어 시간이.. 2023. 5. 4.

/* 내가 추가한 코드 */ /* 내가 추가한 코드 끝끝 */