Loading...

[백준] 1592번 영식이와 친구들 (java)

www.acmicpc.net/problem/1592 1592번: 영식이와 친구들 일단 1번이 공을 잡는다. 1번은 공을 한 번 잡았기 때문에, 공을 3번에게 던진다. 3번은 공을 한 번 잡았기 때문에, 공을 5번에게 던진다. 5번은 2번에게 던지고, 2번은 4번에게 던진다. 4번은 1번에 www.acmicpc.net

[백준] 2563번 색종이 (java)

www.acmicpc.net/problem/2563 2563번: 색종이 첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변 www.acmicpc.net y를 색종이의 가장 왼쪽 좌표(색칠하는 시작점)로 하기위해 100-10(색종이길이)-y로 설정했다. 해당 위치에서 길이 10인 x~x+10, y~y+10을 색칠 범위로 설정해준다 import java.util.Scanner; public class Main { static int n; static int[][] paper=new int[100][100]; public static void main(String[] args..

[백준] 1158번 요세푸스 (java)

www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net import java.util.ArrayList; import java.util.Scanner; public class Main { static int n,k; public static void main(String[] args) { Scanner sc=new Scanner(System.in); n=sc.nextInt(); k=sc.nextInt(); int idx=k-1; ArrayList arr=new ArrayList(); for (int i = 0; i < n; i++) { arr.add(i+1..

[백준] 2493번 탑(java)

package day03; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Scanner; import java.util.Stack; import java.util.StringTokenizer; //5 // //5 3 2 1 4 public class Main { static int n; static int[] towers; public static void main(String[] args) throws IOException { BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); ..

[백준] 1244번 스위치 켜고 끄기 (java)

여자의 경우 현재의 위치를 left, right 변수를 둬서 각각 왼쪽, 오른쪽으로 이동하며 비교해나간다. import java.util.Scanner; public class Main { static int n,m; static int[] light=new int[n]; static int[][] student=new int[m][2]; public static void main(String[] args) { Scanner sc=new Scanner(System.in); n=sc.nextInt(); light=new int[n]; for (int i = 0; i < n; i++) { light[i]=sc.nextInt(); } m=sc.nextInt(); student=new int[m][2]; for..

[백준 1157번] 단어 공부 (python)

most_common은 넘겨받은 수만큼 가장 많이 등장한 값을 전해준다 배열로 변환해서 만약 길이가 1이거나 가장 많이 사용된 알파벳 개수가 여러개가 아니면 해당 값을 출력하고 가장 많이 사용된 알파벳이 여러개라면 (두 개 이상일 테니 처음 두 개의 값만 비교하면 된다) ?을 출력한다 defaultdict으로 해도 되겠지만 most_common을 사용할 수 있기에 Counter를 사용했다 import sys from collections import Counter input=sys.stdin.readline s=input().strip().upper() cnt=Counter(s) # print(len(cnt)) # print(list(cnt.most_common(2))[0][1],list(cnt.most..

[백준 9251번] LCS (파이썬, 최장 공통 부분 수열, DP)

연속된 부분 수열은 아니고 각 문자열을 이루고 있는 문자들 순서만 맞춰서 최장 공통 부분 수열을 구하는 문제이다 a, b 두 문자열의 길이 +1 (각 첫번째 인덱스에 들어가는 값은 초기값인 0이다.) 인덱스 i,j를 비교해서 a와 b의 각 위치에 들어간 문자가 같다면 이전 최대 길이 +1 을 해주면 된다. 1: acaykp , 2: capcak에서 1의 부분 문자인 a(인덱스 0)만 봤을 때 2에서 c인 경우 0, ca인 경우 1 이런식으로 추가되는 문자가 같다면 1 증가시키는 식으로 해결한다. import sys input=sys.stdin.readline a=input().strip() # 엔터키도 들어가지 않도록 b=input().strip() # print(a,len(a)) dp=[[0]*(len..

[백준] 1010번 다리놓기 (실버)

m >=n 일 때 n개의 다리를 놓을 수 있는 경우의 수를 구하는 문제이다. n만큼 뽑아서 순서대로 놓으면 되기 때문에 조합의 수를 구하면 된다. 1. 내 풀이 5C2의 경우 n=2이고 m=5 이다. n 의 개수만큼 5*4 5부터 1씩 빼면서 곱해주고 거기서 다시 n인 2부터 n의 개수만큼만 곱한 수를 나눠주면 된다 다시 말하면 5*4 / 2*1 이 답이다. n=3인 경우는 3개씩이니까 5*4*3 / 3*2*1 이다. import sys input=sys.stdin.readline t=int(input()) for _ in range(t): n, m = map(int, input().split()) answer=1; mm=m; for _ in range(n): answer*=mm mm-=1 for i i..

[백준] 팰린드롬 만들기 (1254번, 파이썬)

www.acmicpc.net/problem/1254 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 www.acmicpc.net abbcd인 경우 abbcd bbcd bcd cd d (d하나는 팰린드롬임) 이렇게 검사해나가서 펠린드롬이 아니었던 abbc를 뒤집어서 d오른쪽에 cbba이렇게 붙인다고 가정한다. 즉 부분문자열이 팰린드롬이 되기까지의 왼쪽 문자열 개수만큼 더해주면 그게 답이다 s=input() for i in range(len(s)): if s[i:]==s[i:][::-1]: print(len(s)+i) break

[백준 2644번] 촌수계산 (python, dfs)

www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1≤n≤100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어진 www.acmicpc.net 리스트 형태로 이어져있는 노드에 대한 정보를 다 놓고 visited 배열을 이용해 방문한 적 없는 노드들과 다 연결시킨다. dfs를 돌려도 다 연결이 안되었다면 서로 이어져있지 않는 관계이다. import sys from collections import defaultdict from collections import deque input=sys.stdin.readline def dfs(a,b):..