본문 바로가기

ALGO

(13)
[JAVA] 파이썬으로 JAVA 익히기 따옴표- 작은따옴표는 일단 안쓰는 걸 추천작은따옴표('): char 타입 (한글자)큰따옴표("): String 타입 (문자열) if-else 문- elif는 없음if (조건식1) {     // 조건식1이 참일 때 실행되는 코드 } else if (조건식2) {     // 조건식2가 참일 때 실행되는 코드 } else {     // 모든 조건이 거짓일 때 실행되는 코드 } 연산자- 정수간 나눗셈(/)은 정수(int)로 반환- 's1 == s2' 대신 객체나 문자열은 's1.equals(s2)' 사용- 'and'는 '&&', 'or'은 '||'- 증가 연산자, 삼항 연산자도 있으니 익숙해지면 사용할 것 자료형- Java는 자료형(int, String등) 선언해야함- var 타입을 통한 타입 추론 지원-..
[백준 BOJ] 174706 배열 돌리기 4 (python) 문제 링크 : https://www.acmicpc.net/problem/17406 이어지는 배열 돌리기 문제입니다. 배열을 돌리는 과정은 1, 3과 비슷하지만 배열을 돌릴 부분이 따로 주어지고, 연산을 그저 수행하는 것이 아니라 최적의 연산 순서를 정하기까지 해야합니다.다만 저는 K가 6이하로 크지 않기때문에 이 순서는 permutation(순열)을 통해 완전탐색을 해주었습니다. 배열과 각 순열들 중 하나의 연산들을 get_ans 함수에 입력하여 결과값을 구해주었습니다.get_lists 함수에 각 과정의 r, c, s, 배열을 입력해주어 돌릴 배열들을 lsts 리스트에 deque로 넣어주었습니다.deque들을 1씩 rotate해 준 뒤 알맞은 arr에서 알맞은 위치에 재배치 해주었습니다.이 과정은 배열 ..
[백준 BOJ] 16935 17470 배열 돌리기 3, 5 (python) 문제 링크 : https://www.acmicpc.net/problem/16935문제 링크 : https://www.acmicpc.net/problem/17470 1, 2로 마찬가지지만 종류가 다양한 구현 문제입니다. 매 과정에서 배열을 직접 바꾸는 과정을 진행하면 시간이 많이 걸리므로 stat이라는 리스트를 조절한 후 그 결과만 배열에 적용해주는 방식을 사용하였습니다.stat = [rotate 여부, 1그룹, 2그룹, 3그룹, 4그룹, flip 여부 (좌우)] 각 연산 과정이 stat을 어떻게 변경해주는지 설명해드리겠습니다.- 1번 연산우선 1, 4와 2, 3 그룹의 위치를 swap 함수를 통해 바꿔줍니다.rotate가 0, 2인 경우는 상하 flip을 해야하는데 rotate를 두번 한 후 좌우 fli..
[백준 BOJ] 16926 16927 배열 돌리기 1, 2 (python) 문제 링크 : https://www.acmicpc.net/problem/16926문제 링크 : https://www.acmicpc.net/problem/16927 큰 어려움 없는 구현 문제로 deque의 rotate를 활용하여 풀이하였습니다.우선 rotate를 쓰기 위해 돌릴 배열들을 lsts 리스트에 deque로 넣어주었습니다.이후 각 deque들을 rotate해 준 뒤 알맞은 arr에서 알맞은 위치에 재배치 해주었습니다. 1번과 2번의 차이 R의 크기 차이인데 deque의 rotate를 사용하면 문제가 없습니다.실제로 두 문제의 난이도나 제출 결과 메모리와 시간도 똑같습니다. ㄷㄷ import sysfrom collections import dequeN, M, R = map(int, sys.stdin..
[프로그래머스] 아방가르드 타일링 (python) 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/181186 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr정말 대표적인 DP문제 입니다.점화식으로 풀이하는 방식이 굉장히 신선했습니다. 1. 기존 DP 방식case = ['000', '012', '210', '102', '201', '120', '021']우선 각 단계의 6가지 케이스를 나누었습니다.이 케이스는 이전 타일은 완성된 상태에서 튀어나온 칸의 수를 여섯가지 경우로 나눈 것 입니다.- 0 이 없는 경우는 그 부분에서 다음 dp 단계로..
[백준 BOJ] 1385 벌집 (python) 문제 링크 : https://www.acmicpc.net/problem/1385 1385번: 벌집첫째 줄에는 당신이 있는 방의 번호 a와 출구가 있는 방의 번호 b가 주어진다.1 ≤ a, b ≤ 1,000,000)www.acmicpc.net저의 풀이는 시간복잡도를 줄이기 위해 좌표계 변환 후 BFS를 이용하는 방식이 아닌 복잡한 구현으로 풀이가 되었습니다.코드에 대한 설명은 코드 길이 8379B의 긴 풀이라 구간별로 설명 드리도록 하겠습니다.무엇보다 이 문제에서는 풀이보다는 풀어가는 아이디어에 대한 영감을 얻으시면 좋은 문제라고 생각합니다. 0. 전체 아이디어 입력값의 최대가 1,000,000인 만큼 BFS 풀이는 위험할 수 있다고 판단하였습니다.따라서 벌집을 1과 1을 제외..
[백준 BOJ] 2873 롤러코스터 (python) 문제 링크 : https://www.acmicpc.net/problem/2873 2873번: 롤러코스터 첫째 줄에 가장 가장 큰 기쁨을 주는 롤러코스터는 가장 왼쪽 위 칸부터 가장 오른쪽 아래 칸으로 어떻게 움직이면 되는지를 출력한다. 위는 U, 오른쪽은 R, 왼쪽은 L, 아래는 D로 출력한다. 정답 www.acmicpc.net 그리디 카테고리의 첫 문제 롤러코스터입니다. 사실 엄청나게 그리디한 문제도 아니며 플래티넘3 수준의 문제도 아닌 것 같습니다. 하지만 풀이하는 과정이 재밌었기에 이렇게 글로 남겨봅니다. 우선 행 혹은 열이 홀수인 경우 모든 칸을 완전탐색 가능합니다. 가장 흔하게 그러므로 가장 흔하게 완전탐색할 수 있는 S자 뱀모양으로 롤러코스터를 방문시키도록 합니다. 저희가 이후 생각해야 할 경..
[백준 BOJ] 2022 사다리 (python) 문제 링크 : https://www.acmicpc.net/problem/2022 2022번: 사다리 첫째 줄에 차례대로 x, y, c에 해당하는 양의 실수 세 개가 입력된다. 수는 소수점 여섯째 자리까지 주어질 수 있으며, 3,000,000,000보다 작거나 같다. www.acmicpc.net 요즘 계속 기하학 문제를 푸니 카테고리를 따뤄 나눴습니다. 그리디 문제도 번갈아가며 자주 푸는데, 아직 마땅히 풀이할 문제가 없지만 일단 그리디 카테고리도 추가하였습니다. 사실 이번 문제 기하학의 탈을 쓴 이분탐색 문제입니다. 어떻게보면 계산하기 어려운 기하문제를 코드에서는 이렇게 풀 수 있다는 것을 알려주는 문제 같습니다. 이분탐색 이진탐색이라고도 하는 Binary Search는 정말 자주 쓰는 탐색법입니다. 시..