본문 바로가기

전체 글61

[백준] 14890 경사로 (Java) [14890 경사로] 난이도: 골드3 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 문제 입력 출력 [아이디어] 단순한 구현 문제이다. 문제 설명대로 코드를 짜주면 되는데 경사로가 겹치게 놓이면 안된다는 것이 가장 까다롭다. 따라서 나는 경사로가 이미 놔져있는가를 체크하는 배열을 따로 써줬다. 그리고 열방향 탐색의 함수를 따로 만들지 않고, 열을 행으로 변환하여 하나의 함수를 재활용 하였다. [JAVA 코드] import java.io.BufferedReader; import java.io.IOException; import jav.. 2022. 4. 26.
[Java Collection] 자바 컬렉션 java.util 패키지에 collection framework 핵심 인터페이스가 들어있다. 다수의 데이터를 쉽게 처리하는 방법을 제공한다. interface 특징 구현 클래스 List 순서가 있는 데이터의 집합. 순서가 있으니까 데이터의 중복을 허락 ex) 일렬로 줄 서기 ArrayList LinkedList Set 순서를 유지하지 않는 데이터의 집합. 순서가 없어서 같은 데이터를 구별할 수 없다. -> 중복 허락하지 않는다. ex) 알파벳이 한 종류씩 있는 주머니 HashSet TreeSet Map key와 value의 쌍으로 데이터를 관리하는 집합. 순서는 없고 key의 중복 불가, value는 중복 가능 ex) 속성 - 값, 지역번호 - 지역 HashMap TreeMap 1. List 인터페이스 .. 2022. 4. 23.
[백준] 1593 문자 해독 (Java) [1593 문자 해독] 난이도: 골드4 1593번: 문자 해독 첫째 줄에 고고학자들이 찾고자 하는 단어 W의 길이 g와 발굴된 벽화에서 추출한 문자열 S의 길이 |S|가 빈 칸을 사이에 두고 주어진다. (1≤g≤3000, g≤|S|≤3,000,000) 둘째 줄에 W, 셋째 줄에 S의 실 www.acmicpc.net 문제 입력 출력 [아이디어] 문자열 S를 앞에서부터 탐색하면서 문자열 W의 길이만큼 잘랐을 때 그 안에 문자열 W의 원소가 전부 있는지 확인해주는 문제이다. 문자열 W의 원소를 전부 탐색할 때 문자열 S을 자른 문자열을 비교하는 방법이 중요하다. 아마 대부분 아래와 같은 함수를 먼저 떠올리기 쉬울 것이다. 하지만, 이런 방법을 사용한다면 시간초과가 날 것이다. // W: 문자열 W // sli.. 2022. 4. 22.
[백준] 1941 소문난 칠공주 (Java) [1941 소문난 칠공주] 난이도: 골드3 1941번: 소문난 칠공주 총 25명의 여학생들로 이루어진 여학생반은 5×5의 정사각형 격자 형태로 자리가 배치되었고, 얼마 지나지 않아 이다솜과 임도연이라는 두 학생이 두각을 나타내며 다른 학생들을 휘어잡기 시작 www.acmicpc.net 문제 입력 출력 [아이디어] BFS와 백트래킹 그리고 조합을 사용하는 문제이다. 단순한 BFS를 사용하면 십자가모양을 만들어낼 수 없기 때문에 조합을 사용하여 먼저 7명을 선택해준다. 이 때, 5 x 5 로 학생들이 주어지기 때문에 0 ~ 24로 번호를 정하고 조합을 구하면 편하다. n번 학생의 (행, 열)을 구하는 방법은 (n / 5, n % 5) 이므로 번호를 좌표로 변환하는 것은 크게 어렵지 않다. 7명을 모두 선택한.. 2022. 4. 20.
[MarkDown ] 마크다운 문법 👀 마크다운이란 마크다운(Markdown)은일반 텍스트기반의 경량마크업 언어다. 일반 텍스트로 서식이 있는 문서를 작성하는 데 사용되며, 일반 마크업 언어에 비해 문법이 쉽고 간단한 것이 특징이다. HTML과 리치 텍스트(RTF) 등 서식 문서로 쉽게 변환되기 때문에 응용 소프트웨어와 함께 배포되는 README 파일이나 온라인 게시물 등에 많이 사용된다. -위키백과- 📖 마크다운 작성법 1. 제목(Header) 1-1. 큰제목 (H1과 동일) 큰제목입니다 ========= 큰제목입니다 1-2. 작은제목 (H2와 동일) 작은제목입니다 ----------------- 작은제목입니다 1-3. 'H1' - 'H6' 또는 '#' 의 개수로 표현 가능 # H1 ## H2 ### H3 #### H4 ##### H5 .. 2022. 4. 20.
[백준] 1600 말이 되고픈 원숭이 (Java) [1600 말이 되고픈 원숭이] 난이도: 골드4 1600번: 말이 되고픈 원숭이 첫째 줄에 정수 K가 주어진다. 둘째 줄에 격자판의 가로길이 W, 세로길이 H가 주어진다. 그 다음 H줄에 걸쳐 W개의 숫자가 주어지는데, 0은 아무것도 없는 평지, 1은 장애물을 뜻한다. 장애물이 있 www.acmicpc.net 문제 입력 출력 [아이디어] 문제 자체는 BFS를 활용하면 된다는 것이 바로 보인다. 하지만, 일반 BFS를 활용했다가는 틀렸습니다를 만나게 될 것이다. 이 문제는 말의 이동 횟수에 따라 방문 여부를 다르게 관리해줘야 한다는 것이 문제의 핵심이다. visited 배열을 3차원으로 만든다. visited[i][j][k] 에서 i는 행, j는 열, k는 말처럼 움직인 횟수를 나타낸다. 여기서 k는 0~.. 2022. 4. 19.
[백준] 2636 치즈 (Java) [2636 치즈] 난이도: 골드4 2636번: 치즈 첫째 줄에는 사각형 모양 판의 세로와 가로의 길이가 양의 정수로 주어진다. 세로와 가로의 길이는 최대 100이다. 판의 각 가로줄의 모양이 윗 줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진 www.acmicpc.net 문제 입력 출력 [아이디어] 이 문제는 BFS를 사용하면 된다고 바로 감이 올 것이다. 하지만 어려운 부분은 어떻게 외부 공기가 닿는 부분만 체크를 하는가이다. 문제를 해결하는 방법은 거꾸로 생각하기이다. 보통 치즈를 너비 우선 탐색하는 방법을 사용하지만, 이 문제는 바깥의 공기를 너비 우선 탐색하여 체크해주는 것이 포인트이다. 먼저 바깥의 공기를 너비 우선 탐색해서 어느 부분이 공기인지 체크해준다. 그 후 전체를 탐색하면서 치즈인 경우.. 2022. 4. 17.
[백준] 14891 톱니바퀴 (Java) [14891 톱니바퀴] 난이도: 골드5 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net 문제 입력 출력 [아이디어] 톱니바퀴를 돌릴 때 재귀를 활용하였다. 왼쪽 톱니바퀴가 회전하는지를 판단할 때는 아래와 같이 코드를 작성하였다. // 왼쪽 톱니바퀴 회전 여부 판단 if(gear > 1 && !visited[gear - 1] && gears[gear][6] != gears[gear - 1][2]) { // 맞닿은 톱니의 극이 다르다면 rotate(gear - 1, dir * -1); // 왼쪽 톱니바퀴를 d.. 2022. 4. 17.
[solved.ac] 스트릭 색 변경하기 solved.ac 에서 스트릭 색상을 아래와 같이 변경할 수 있다. 색상에도 등급이 존재하는데 아래 표를 참고하면 된다. 색을 바꾸기 위해서는 별조각을 코인으로 환전해서 (별조각도 환율이 존재한다 ㅋㅋㅋ) 코인샵에서 스트릭 염색 컬러칩을 구매 후 인벤토리에서 사용하면 된다. 레전더리 색을 얻기 위해... 별조각을 7000개를 넘게 사용했다. 사실 중간에 얻었는데 아무 생각없이 버튼을 한 번 더 눌러서 에픽으로 다시 바뀌는 대참사를 맛보았다.... 만우절 이벤트에서 별조각을 1000개도 사용하지 않고 한별포스 level22를 찍었는데 이건 유지되는거라 더 비싼가보다. 2022. 4. 13.
[SWEA] 5604 구간 합 (Java) [5604 구간 합] 난이도: D4 (Professional) 문제 출처 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com [아이디어] 이 문제의 핵심은 A의 마지막 숫자는 0, B의 마지막 숫자는 9가 되어야한다는 것이다. 예시를 들어 설명하자면 A = 5, B = 32 인 구간 합을 구한다고 생각해보자. 이 때, A의 끝 수를 0으로 맞추기 위한 5, 6, 7, 8, 9 와 B의 끝 수를 9로 맞추기 위한 30, 31, 32는 미리 계산해준다. 숫자 '14609' 의 자리수들을 계산하기 위해서는 %10 과 /10 활용하면 된다. 14609 % 10 = 9 14609 / 10 = 1460 -> 1460 % 10.. 2022. 4. 12.
[SWEA] 8458 원점으로 집합 (Java) [8458 원점으로 집합] 난이도: D4 문제 출처 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com [아이디어] (x, y) 의 점에서 원점까지 갈 때 방향은 신경쓰지 않아도 된다. 즉, 점과 원점사이의 거리를 이동한다고 생각하면 되기 때문에 맨헤튼 거리를 사용하여 |x| + |y|를 사용해준다. 3과 5가 있을 때, 작은 수가 먼저 원점에 도달하는 경우 큰 수가 원점까지 이동하는 동안 원점에서 +1, -1을 반복하며 기다리면 되므로 가장 큰 수의 경우만 생각해주면 된다. 만약, 홀수와 짝수가 함께 있는 경우에는 +1, -1을 반복하며 기다릴 때 원점이 아닌 다른 점에서 멈추게 되므로 전부 다 원점에 도달할 수.. 2022. 4. 11.
SQLD자격증(2주동안의 공부방법) SQLD 자격증을 따기 위해서 대략 2주정도 공부하였다. 주변에서 금방 딸 수 있다는 말에 급하게 준비했지만 생각보다 양이 많고 쿼리 부분이 헷갈려서 힘들었다. 개념 공부는 요약집 등을 다운받아 공부하였고, 문제는 다들 아는 노랑이를 풀었다. SQL 자격검정 실전문제 SQL 자격검정 실전문제는 국가공인 SQL 전문가 및 국가공인 SQL 개발자 자격시험 대비 수험서로 SQL 전문가 가이드에서 다루고 있는 데이터 모델링의 이해, SQL기본 및 활용, SQL 고급 활용 및 튜닝 등 book.naver.com 참고로 나는 컴퓨터공학을 복전하였고, 컴활 1급과 정처기가 있어서 기본적인 개념은 어느정도 알고 있는 상태였다. 또한, 쿼리문은 MYSQL을 공부해봤기 때문에 기본적인 문법은 알고있었다. 하지만 SQLD는.. 2022. 4. 8.