목록Study (411)
hwooo
XML (Extensible Markup Language)마크업 형태를 쓰는 데이터교환형식마크업 형태?태그 등을 이용하여 문서나 데이터의 구조를 나타내는 방법속성 부여도 가능구성프롤로그루트요소하위 요소들 마녀 배달부 키키 따스함에 둘러쌓인다면 하울의 움직이는 성 세계의 약속 HTML vs XML특징 HTML XML용도데이터를 표시데이터를 저장 및 전송태그 정의미리 정의된 태그 사용사용자 정의 태그 가능대소문자 구분대소문자 구분하지 않음대소문자 구분함 Document JSON vs XMLJSON과 비교 시 닫힌 태그가 계속 들어가기에 더 무겁다.자바스크립트 오브젝트로 변환하기 위해 JSON보다 더 많은 노력이 필요sitemap.xml서비스 내의 모든 페이지들을 리스트업한..
직렬화객체를 저장/전송 가능한 상태로 변환하는 것을 뜻함외부의 시스템에서도 사용할 수 있도록 byte 형태로 데이터를 변환하는 기술ex. 사용 언어의 코드 내 객체/해시 테이블/딕셔너리 → JSON으로 변환JAVA 직렬화가 필요한 이유?Java에서의 직렬화는 객체를 Binary 형태로 변환하는 것을 뜻함.disk에 객체를 저장하거나 컴퓨터 네트워크 상으로 객체를 전송하고 싶다면 Binary 형태로 바꿔야지만 가능하다. 객체 그 자체는 disk나 네트워크 장비가 이해할 수 없을 것이다.직렬화 예시CSV, XML, JSON 형태의 직렬화사람이 읽을 수 있다저장 공간의 효율성이 상대적으로 떨어지고, 파싱 하는 시간이 오래 걸린다주로 데이터의 양이 적을 때 사용한다Binary 직렬화사람이 읽을 수 없다저장 공간..
JSON?Javascript 객체 문법으로 구조화된 데이터 교환 형식/표현을 위한 문자 기반의 표준 포맷python, javascript, java 등 여러 언어에서 데이터 교환형식으로 쓰이며 객체문법 말고도 단순한 배열, 문자열도 표현 가능타입js의 object와 유사하지만 undefined, 메서드 등을 포함할 수 없음숫자, 문자열, 참/거짓, 배열, 객체, null 값 가능js 객체 문법을 따름정보를 저장하는 키-값 페어를 사용하여 데이터를 계층적 방식으로 표현한다.데이터는 중괄호{}로 묶여 있으며, 각 키-값 페어는 쉼표,로 구분된다.{ "name" : "kundo1", "name" : "king"}// name = king// key 중복 선언 시 나중에 선언한 값으로 덮어쓰여짐활용프로그래밍 언..
https://www.acmicpc.net/problem/3109풀이dfs로 탐색하되, 최대한 많은 파이프를 연결할 수 있게 위-중간-아래의 방향으로 탐색해야 한다.또한 방문처리 후 실패한 경로라도 되돌려놓지 않는다.[1,1]- > [2,2] -> [2,3] 일 때 실패한다면 [2,2]에서 가는 모든 길이 실패하기에 방문한 곳은 다시 한 번 방문하지 않는다. Java 코드import java.io.BufferedReader;import java.io.InputStreamReader;public class Main { static int N, M; static char[][] map; static boolean[][] visited; public static void main(Stri..
https://www.acmicpc.net/problem/1194풀이BFS로 탐색하되, visited 배열을 3차원을 만든다.칸을 방문할 때 어떤 키를 가지고 방문했는지 확인해서, 같은 상태일 때 방문하는 걸 막는다.key를 비트값으로 저장하여 문을 만났을 때 key가 있는지 확인한 후 있다면 방문이 가능하게 탐색한다.Java 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayDeque;import java.util.ArrayList;import java.util.List;import java.util.Queue;public class Main { static int N, M; static..
https://www.acmicpc.net/problem/17472풀이먼저 bfs로 섬을 나눈다. 나눈 후 섬인 곳에서 다른 섬까지의 길이를 찾는다. 이 때 길이 꺾이면 안 되므로 4방향으로 이동한 후, 다른 섬이 있다면 [출발, 도착, 길이]를 저장한다.모든 섬과 섬 사이의 거리를 구했다면, 이를 길이가 짧은 순으로 정렬하고, 짧은 것부터 이어주며 union-find를 진행한다.다 이어준 후에 find()를 한 번 더 실행하여 연결된 그룹들의 루트를 통일해준 후 하나라도 루트가 다른 게 있다면 -1을, 아니라면 구한 값을 출력한다.Java 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayDeque..
https://www.acmicpc.net/problem/2146풀이bfs로 섬을 찾은 후, 다시 bfs로 섬 위의 어떤 점에서 다른 섬으로 가는 최단 거리를 찾는다.섬의 최대 크기가 100 * 100이므로 브루트포스로 탐색한다.Java 코드import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.ArrayDeque;import java.util.Queue;public class Main { static int N, groupNum = 2; static int[][] map; static boolean[][] visited; public static void main(String args[]) th..
https://www.acmicpc.net/problem/17490풀이노드끼리의 연결 정보를 저장한 후, 이를 바탕으로 각 그룹으로 묶어준다.이 때 모두 하나의 그룹에 묶인다면 와우도를 사용하지 않아도 되므로 YES 출력 후 프로그램을 종료한다.1개 이상이라면 와우도까지의 돌의 개수를 오름차순으로 정렬, 가장 돌이 적게 드는 곳부터 연결한다.이 때 해당 그룹에서 다리가 이미 연결되었다면 다른 다리가 추가로 필요하지 않으므로 set에 그룹의 정보를 저장한 후, 한 그룹에서 하나의 다리만 연결되게 한다.연결 도중 돌의 개수가 K개가 넘었다면 NO를 출력하고, 아니라면 YES를 출력한다.Java 코드import java.io.BufferedReader;import java.io.InputStreamReader..