알고리즘 143

[BaekJoon] 파이프 옮기기 1 for JAVA

https://www.acmicpc.net/problem/17070 17070번: 파이프 옮기기 1 유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 www.acmicpc.net 증말증말 어려운 문제ㅠㅠ 처음에는 완전탐색으로 모든 모양을 돌리면서 만약에 ㅡ모양일 때 \ 모양을 (1,1)에서 두었다면 dp 배열에 x y 현재모양 다음모양 이런식으로 열을 만들어서 메모이제이션을 하려고 했었다. 그런데 구현하다가 이건 아닌 것 같아서 관둠 그래서 결국 다른 사람들의 도움을 받아.... 겨우 해결(이해)한 문제이다. 일단 dp를 쓰기 위해 배열을 어떻게 ..

알고리즘/백준 2022.10.02

[프로그래머스] 보급로 for JAVA

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15QRX6APsCFAYD SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 딱 보고 전형적인 BFS 문제로 추정했다. (0,0) ~ (N-1, N-1)까지 가는 최소 비용을 구하는 문제이다. 대신 가는 곳마다 weight가 있고 그 자리에 갈 수 있는 최소 weight를 구해야 하므로... 넘넘 까다로웠다! 처음에는 그냥 BFS 구현 딱 하고 visited 처리 해줬는데 이렇게 하면 구불구불한 길이 정답일 때가 구현이 안돼서 매우매우 고민하다가... 정말 귀찮아서 하기 싫..

[프로그래머스] 로또의 최고 순위와 최저 순위 for JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/77484?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 숫자가 0인 것을 모두 맞았다고 가정했을 때 최고의 등수, 다 틀렸다고 가정했을 때 최저의 등수인 문제이다. import java.util.*; class Solution { public int[] solution(int[] lottos, int[] win_nums) { int[] answer = new int[2]; Set win_num = new HashSet(); f..

[프로그래머스] 입국심사 for Java

https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 입국심사를 n명이 하는데에 걸리는 최소 시간을 구하는 문제이다. 근데 이제 대기자가 1,000,000,000명을 곁들인... 10억..명....? 그리고 각 심사관이 한 명을 심사하는데 걸리는 시간도 1분 이상 1,000,000,000분 이하이다. 이렇게 큰 수가 나오면 의심해볼 것 : 이분탐색 그래서 이분탐색으로 방향을 잡았다. 이분탐색이라 하믄.... left, mid, right를 정하고 반..

[BaekJoon] 백준 11053번_가장 긴 증가하는 부분 수열 for JAVA

https://www.acmicpc.net/problem/11053 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 방심했다가 여러번 틀린 문제이다. 일단 부분수열..이라고 했지만 N의 크기가 1,000까지이기 때문에 부분집합을 이용하면 큰일난다는 직감이 온다. 그렇다면 for문을 사용해서 훑어야할 것 같다! 그래서 처음에는 1000 x 1000 = 1,000,000 이므로 2중 for문을 이용해서 앞에꺼보다 뒤에꺼가 크면 cnt+1..

알고리즘/백준 2022.08.21

[BaekJoon] 백준 2493번_탑 for JAVA

https://www.acmicpc.net/problem/2493 2493번: 탑 첫째 줄에 탑의 수를 나타내는 정수 N이 주어진다. N은 1 이상 500,000 이하이다. 둘째 줄에는 N개의 탑들의 높이가 직선상에 놓인 순서대로 하나의 빈칸을 사이에 두고 주어진다. 탑들의 높이는 1 www.acmicpc.net 내 탑보다 높이가 같거나 큰 탑의 인덱스를 차례대로 출력하는 문제이다. 탑의 개수가 500,000개 이길래 되지 않을까? 하고 for문으로 갈겼는데 시간 초과가 떴다. 틀린 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokeni..

알고리즘/백준 2022.08.07

[JAVA] 배열과 관련된 메소드 살펴보기

자바 배열 출력하기 💫 for문을 돌리지 않고 배열 고대로 출력하기 자바는 print(배열변수) 를 하면 배열 자체의 주소를 출력한다. 이 때 사용하는 메소드가 Arrays.toString(object[] o) 가 된다. public class Array { public static void main(String[] args){ int arr1[] = {1,2,3}; String arr2[] = {"J", "A", "V", "A"}; System.out.println(arr1); System.out.println(arr2); System.out.println(Arrays.toString(arr1)); System.out.println(Arrays.toString(arr2)); } } 를 실행하면 이 출력..

[BaekJoon] 백준 11866번 _ 요세푸스 문제 0.Python

https://www.acmicpc.net/problem/11866 11866번: 요세푸스 문제 0 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 1,000) www.acmicpc.net n,k = map(int, input().split()) people = [i for i in range(1, n + 1)] answer = [] while len(people) != 0: for _ in range(k-1): people.append(people[0]) people.pop(0) answer.append(people.pop(0)) print('') # print(''.format(', '.join(map(str, answer)))) # 이거 왜 안될까 이렇게 풀었다..

알고리즘/백준 2022.04.15

[BaekJoon] 백준 7568번 _ 덩치 for Python

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net n = int(input()) bulk = [list(map(int, input().split())) for _ in range(n)] answer = [] for bulk_ in bulk: count = 0 for compare in bulk: if bulk_[0] < compare[0] and bulk_[1] < compare[1]: count += 1 answer.append(c..

알고리즘/백준 2022.04.14

[BaekJoon] 백준 8958번 _ OX퀴즈.Python

https://www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net 구현 문제 조지기 해야지 T = int(input()) for _ in range(T): input_ = list(input()) answer = 0 index = 1 O_list = [] for i in input_: stack = [] stack.append(i) if(stack[-1] == 'O'): answer += index index += 1 else: index =..

알고리즘/백준 2022.04.13