programming language 103

[이코테] level2 BFS - 미로탈출 (python)

문제 N x M 크기의 직사각형 형태의 미로에 여러 마리의 괴물이 있어 이를 피해 탈출해야 한다. 현재 위치는 (1, 1)이고 미로의 출구는 (N,M)의 위치에 존재하며 한 번에 한 칸씩 이동할 수 있다. 괴물이 있는 부분은 0으로, 괴물이 없는 부분은 1로 표시되어 있다. 미로는 반드시 탈출할 수 있는 형태로 제시된다. 탈출하기 위해 움직여야 하는 최소 칸의 개수를 구하라. 칸을 셀 때는 시작 칸과 마지막 칸을 모두 포함해서 계산한다. 입력 첫째 줄에 두 정수 N, M(4 =0 and x

[이코테] level2 DFS - 음료수 얼려먹기 (python)

문제 N × M 크기의 얼음 틀이 있다. 구멍이 뚫려 있는 부분은 0, 칸막이가 존재하는 부분은 1로 표시된다. 구멍이 뚫려 있는 부분끼리 상, 하, 좌, 우로 붙어 있는 경우 서로 연결되어 있는 것으로 간주한다. 이때 얼음 틀의 모양이 주어졌을 때 생성되는 총 아이스크림의 개수를 구하는 프로그램을 작성하라. 다음의 4 × 5 얼음 틀 예시에서는 아이스크림이 총 3개가 생성된다 입력 첫 번째 줄에 얼음 틀의 세로 길이 N과 가로 길이 M이 주어진다. (1 =0 and x

[이코테] part2 구현 - 게임 개발 (python)

문제 현민이는 게임 캐릭터가 맵 안에서 움직이는 시스템을 개발 중이다. 캐릭터가 있는 장소는 1 X 1 크기의 정사각형으로 이뤄진 N X M 크기의 직사각형으로, 각각의 칸은 육지 또는 바다이다. 캐릭터는 동서남북 중 한 곳을 바라본다. 맵의 각 칸은 (A, B)로 나타낼 수 있고, A는 북쪽으로부터 떨어진 칸의 개수, B는 서쪽으로부터 떨어진 칸의 개수이다. 캐릭터는 상하좌우로 움직일 수 있고, 바다로 되어 있는 공간에는 갈 수 없다. 캐릭터의 움직임을 설정하기 위해 정해 놓은 매뉴얼은 이러하다. 현재 위치에서 현재 방향을 기준으로 왼쪽 방향(반시계 방향으로 90도 회전한 방향)부터 차례대로 갈 곳을 정한다. 캐릭터의 바로 왼쪽 방향에 아직 가보지 않은 칸이 존재한다면, 왼쪽 방향으로 횐전한 다음 왼쪽..

[이코테] part2 그리디 - 숫자카드게임, 1이 될 때까지

문제 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임 숫자가 쓰인 카드들이 N x M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 그다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. 입력 조건 첫째 줄에 숫자 카드들이 놓인 행의 개수 N과 열의 개수 M이 공백을 기준으로 하여 각각 자연수로 주어진다. (1 ≤ N, M ≤ 100) 둘째 줄부터 N개의 줄에 걸쳐 각 카드에 적힌 숫..

[이코테] part2 그리디 - 큰 수의 법칙

오랜만에 블로그 글을 쓴다. 통계를 보니 생각보다 많은 사람들이 방문해서 놀라웠다. 다시 블로그를 활성화시켜보자~ 기록하자 . 문제 다양한 수로 이루어진 배열이 있을 때, 주어진 수들을 M번 더하여 가장 큰 수를 만드는 법칙 배열의 특정한 인덱스에 해당하는 수가 연속해서 K번을 초과하여 더해질 수 없는 것이 특징 [2, 4, 5, 4, 6], M=8, K=3 ⇒ 6 + 6 + 6 + 5 + 6 + 6 + 6 + 5 = 46 서로 다른 인덱스에 해당하는 수가 같은 경우에도 서로 다른 것으로 간주 [3, 4, 3, 4, 3], M=7, K=2 ⇒ 4 + 4 + 4 + 4 + 4 + 4 + 4 = 28 입력 조건 첫째 줄에 N(2 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), K(1 ≤ K ≤ 1..

[백준] 20115 에너지드링크 (Greedy문제)

문제 https://www.acmicpc.net/problem/20115 20115번: 에너지 드링크 페인은 에너지 드링크를 좋아하는 회사원이다. 에너지 드링크는 카페인, 아르기닌, 타우린, 나이아신 등의 성분이 들어있어 피로 회복에 도움을 주는 에너지 보충 음료수이다. 야근을 마치고 한 www.acmicpc.net 문제풀이 1. 최대의 양을 얻는 경우 => 최소의 양을 버리기 1. sort 정렬을 통해서 최소의 양을 순차적으로 고른다. 2. list의 제일 큰 값에 결과를 저장한다 Why? 순차적으로 작은 순으로 나누는값을 고르기 때문에 결국 제일 큰 값을 나누지 않고 더해진다. 3. 출력값은 정수로. 소수점 자리수 제한 방법 round 함수를 이용했다. https://blockdmask.tistory..

[백준] 1931 회의실 배정 (Python)

문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 문제풀이 대표적인 그리디 개념을 이용하는 문제이다. 그리디는 당장의 상황을 기준으로 확장시키는 방향으로 풀면 쉽게 해결이 가능한 경우가 많다. 내가 회의실을 사용하고 있다고 가정했을 때, 내 회의가 끝난 후에 회의실에서 가장 많은 회의가 열리기 위해서는 1. "종료 시간이 빨라야 한다" 따라서 종료시간이 빠른 순으로 정렬한다. 종료시간 빠른 순으로 정렬하기 위해 sort() 배열을 사용했다. 그리고 이차원 배열 sort() 이기 때문에 공부가 필요했다. arr = [[2,3],[1,2]] arr.sort(k..

[SQL DISTINCT] 프로그래머스 중복 제거하기

https://programmers.co.kr/learn/courses/30/lessons/59408 코딩테스트 연습 - 중복 제거하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr SELECT COUNT(DISTINCT NAME) from ANIMAL_INS where NAME is not null 같은 컬럼을 셀 때는 중복 제거위해 COUNT(NAME)에 DISTINCT를 넣어준다 . 참고 https://chanhuiseok.git..

[SQL JOIN] 프로그래머스 없어진 기록 찾기, 있었는데요 없었습니다, 오랜기간 보호한 동물, 보호소에서 중성화 한 동물

코딩테스트 연습 - 없어진 기록 찾기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr select OUTS.ANIMAL_ID, OUTS.NAME from ANIMAL_OUTS OUTS LEFT OUTER JOIN ANIMAL_INS INS ON OUTS.ANIMAL_ID = INS.ANIMAL_ID where INS.ANIMAL_ID is null order by OUTS.ANIMAL_ID LEFT OUTER : 왼쪽 테이블 기준으로 J..