만족은 하되 안주하지는 말자

기록해야 기억한다

프로그래밍 162

[python]백준 14891번: 톱니바퀴

문제 www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 � www.acmicpc.net 아이디어 구현 테마인데, 톱니바퀴를 연달아 반대방향으로 돌리는지 확인하고 돌리는 함수 do_wheels 를 만들어, 재귀형태로 풀었다. 바퀴는 4개로 고정이라서 depth가 아무리 깊어봤자 최대 2다. 4개의 톱니바퀴의 왼쪽부분과 오른쪽 부분을 상수 LEFT,RIGHT = 6,2 로 위치를 지정해놓고, 인덱스에는 변화를 주지않은채 '돌리는행동'을 queue의 앞과 끝을 pop,append 해주는 ..

[python] 코딩 테스트 약점 정리

첫 취준생으로써 몇번 코테를 보지도 않았지만 (코딜리티 2회, 라인,카카오,쿠팡,프로그래머스 코딩챌린지 끝) 그 동안의 연습 부족으로 생소했던 포인트들을 정리해 본다. 1. 시간이 나오는 문제 인풋이 [10/03 01:34:55, 10/04 13:35:22] 식의 시간 형태 리스트로 주어지는 경우 어찌할줄을 몰라 시간을 많이 날렸다. (쿠팡,카카오) python 은 이런 경우 datetime 모듈을 활용해 datetime.strftime 과 datetime.strptime 을 활용해 풀 수 있을 거 같은데 너무 생소해서 머리가 잘 안굴러가서 결국엔 못풇었다. 시간의 대소관계 비교라던지 등등을 잘 할 수 있게 연습해놓자 2. 진법 변환 문제 여러 군데에서 1,2번 문제로 나오기 좋은 테마인 것 같다. 10..

[python] 백준 6497번: 전력난

문제 https://www.acmicpc.net/problem/6497 알고리즘 최소 신장 트리, Union 아이디어 union 알고리즘인 find_parent, union_parent 를 기반으로, heapq 를 통해 거리가 최소인 순서대로 cycle이 존재하는지를 판단해 cycle 이 없는 경우엔 최적의 해임이 보장되므로 이를 추가한다. 코드 from sys import stdin import heapq def find_parent(parent,a): if parent[a] != a: parent[a] = find_parent(parent,parent[a]) return parent[a] def union_parent(parent,a, b): a = find_parent(parent,a) b = fi..

[python] union 연산으로 노드 집합 관계 구하기

from sys import stdin n,m = map(int, stdin.readline().split()) parent = [0]*(n+1) def find_parent(a): if a != parent[a]: parent[a] = find_parent(parent[a]) return parent[a] def union_parent(a,b): pa = find_parent(a) pb = find_parent(b) if pa > pb: parent[a] = b else: parent[b] = a for i in range(1,n+1): parent[i] = i for i in range(n): li = list(map(int,stdin.readline().split())) for j in range(..

[python] 백준 14503번: 로봇 청소기

문제 https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net 분류 구현과 시뮬레이션 아이디어 설명대로 구현하되, DFS 모델에서 백트래킹이 없다고 보면된다. 다음 경우의 수를 찾으면 바로 break 걸어서 다른 경우의 수를 큐에 추가하지 않도록 해야한다. 문제를 꼼꼼히 읽지 않아 후진의 경우 를 코드로 구현하지않아서 이거 왜안돼?? 만 외친 채 40분정도를 날린 기분이다. 구현문제는 기본적으로 문제를 자아아알 읽는것이 정답의 길이다. 방향전환과 진행..

[Java] StringTokenizer, StringBuffer, StringBuilder 클래스 차이

StringTokenizer 문자열이 특정 구분자 (이를 delimeter라 한다)로 연결 되어있으면 2가지 방법으로 문자열을 쪼갠다. 1. String.split() 2. java.util.StringTokenizer 1과 2의 차이는 1은 정규표현식(regular expression), 2는 문자로 구분을 한다는 것이다. String.split() class Main { public static void main(String\[\] args) { String str = "안녕하세요,만나서-반가워요"; String\[\] tokens = str.split(",|-"); for (String token : tokens) { System.out.println(token); } } } StringTokeni..

[python] 백준 14500번: 테트로미노

문제 www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변� www.acmicpc.net 테마 브루트포스 아이디어 테트로미노들은 기본모양에서 90도씩 회전, x/y축 반전(뒤집기) 등이 가능하다. 네모의 칸수는 총 4칸. 돌리고 뒤집고 돌리고 뒤집고 ... [[0,0,0], [0,0,0], [0,0,0]] 3*3 이내의 좌표로 모든 테트로미노의 좌표가 표현 가능하다. 무식하지만 총 19개의 테트로미노 경우의 수를 'tetrominos' 배열에 저장해 활용했다. N*M 배열에서 각 i행j열 좌..