본문 바로가기

코딩테스트

(55)
[Python/Java] 백준1012번. 유기농 배추 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 문제 설명 해충 방지에 효과적인 배추흰지렁이를 구입하기로 한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아 먹음으로써 배추를 보호한다. 어떤 배추에 배추흰지렁이가 한마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있다. 한 배추의 상하좌우 네 방향에 다른 배추가 위치한 경우 인접해 있는 것이다. 0은 배추가 심어져 있지 않은 땅이고, 1은 배추가 심어져 있는 땅을 나타낸다. 배추흰지렁이 마리..
[Python] 백준1011. Fly me to the Alpha Centauri https://www.acmicpc.net/problem/1011 1011번: Fly me to the Alpha Centauri 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행 www.acmicpc.net 문제 설명 x -> y까지 도달하는데 필요한 최소한의 공간이동 장치 작동 횟수를 출력한다. 예를 들어 0,3 까지 가기 위해서 1,1,1 총 3번의 공간이동이 필요하다. 여기서 주의할 점이 몇가지 있다. 시작할때와 도착하기전에는 무조건 1광년만 이동이 가능하다. 처음 작동시킬 경우 -1 0 1 만큼만 이동이 가능하다. 그 다음으로 0 1 2 광년을 이동..
[Python] 백준 1002. 터렛 https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 $-1$ 출력한다. www.acmicpc.net 이 문제는 원에 대해서 알아야 쉽게 풀 수 있는 문제이다. 원에 대해 알아보며 코드를 작성해보자 두 점 사이의 거리 공식 Python Code distance = (x2 - x1)**2 + (y2 - y1)**2 distance = math.sqrt(distance) 두 원의 위치 관계 1. 만나지 않는 경우 외부에서 만나지 않음 r1 + r2 d인 경우 동심원 d == 0 인 경우 코드를 작성해보면 ..
[Python] 백준 2667번. 단지번호 붙이기 https://www.acmicpc.net/problem/2667 2667번: 단지번호붙이기 과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여 www.acmicpc.net 풀이 입력받은 배열에 1이 있다면 dfs 함수를 호출합니다. x,y의 인덱스가 n보다 크거나 0보다 작아지면 배열 범위를 벗어나기 때문에 return을 합니다. x,y 좌표에 1이 있다면 count을 증가시킵니다. -> 1의 갯수를 셉니다. 위,아래,오른쪽,왼쪽을 확인하며 1이 있는지 확인합니다. 1이 있다면 다시 dfs을 호출합니다. import sys input = sys.stdin.readli..
[Python][LeetCode] letter Combinations of a phone number(전화번호 문자 조합) https://leetcode.com/problems/letter-combinations-of-a-phone-number/ 문제 설명: 2에서 9까지 숫자가 주어졌을 때 전화번호로 조합 가능한 모든 문자를 출력하는 문제 이 문제는 전체를 탐색해서 푸는 조합 문제이다. dic = { "2": "abc", "3": "def", "4": "ghi", "5": "jkl", "6": "mno", "7": "pqrs", "8": "tuv", "9": "wxyz", "0": "+" } 자판기에 다음과 같이 있다고 했을때 '23' 을 입력받으면 'ad' , 'ae', 'af', 'bd', 'be', 'bf', 'cd', 'cd', 'cf' 3*3 = 9개 출력을 하면 된다. 풀이 path = '' 를 정의하고 path..
[Python] 백준 15650번. N과 M(2) https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 문제 설명 예제2 출력 결과를 보면 조합이라는 것을 바로 알 수 있다. 1 2 1 3 1 4 2 3 2 4 3 4 풀이설계 파이썬 itertools모듈의 combinations 를 사용하면 금방 풀 수 있다. import sys from itertools import combinations input = sys.stdin.readline n, m = map(int, input().split())..
[Python] 백준 12015번. 가장 긴 증가하는 부분 수열2 https://www.acmicpc.net/problem/12015 12015번: 가장 긴 증가하는 부분 수열 2 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000,000) www.acmicpc.net 문제 설명: 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 풀이설계 리스트에서 val을 하나씩 꺼내온다. dp[-1]는 보다 val이 크다면 뒤에 바로 추가해준다. 그렇지 않다면 이..
[Python] 백준 2108번. 통계학 https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net 문제설명 산술평균 : N개의 수들의 합을 N으로 나눈 값 중앙값 : N개의 수들을 증가하는 순서로 나열했을 경우 그 중앙에 위치하는 값 최빈값 : N개의 수들 중 가장 많이 나타나는 값 범위 : N개의 수들 중 최댓값과 최솟값의 차이 풀이설계 산술형은 sum / 반올림은 round 중앙값은 배열의 중앙값 // 2 최빈값 배열의 길이가 1 이하인 경우 0번째 값 출력 배열의 길이가 1 초과인 경우 Counter ..