본문 바로가기

온라인 저지/BOJ42

[BOJ/Java] 2493 탑 1차 시도 stack 문제이길래 순진하게도 그냥 stack으로만 하면 속도가 나오는 줄 알았다. 생각한대로 구현은 어찌저찌 해냈다. 하지만 6%에서 시간 초과... 생각해보면 당연하다. pop, push 계속 일어나고.. stack도 3개나 쓰고. 그래서 stack 사용을 포기 하고 그냥 완전탐색 방향으로 선회했다. -> 코드 변수가 너무 많아지고 복잡해지면 잘못 가고 있다는 사실을 깨닫자.. import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Stack; import java.util.StringTokenizer; public class BOJ2493_1st_Failure { public static void.. 2022. 2. 9.
[BOJ/Java] 1966 프린터 큐 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws Exception { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); StringBuilder ans = new StringBuilder(); int T = Integer.parseInt(in.readLine()), targetIndex,.. 2022. 2. 9.
[BOJ/Java] 1991 트리 순회 재귀 연습하려고 풀었다가 이진트리까지 공부했다..^^ 입력 출력 7 A B C B D . C E F E . . F . G D . . G . . ABDCEFG DBAECFG DBEGFCA import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { static StringBuilder ans = new StringBuilder(); static class Node { char data; Node left, right; Node(char data) { this.data = data; } } static class Tree { Node root; public void addNode(char data, char left,.. 2022. 2. 6.
[BOJ/Java] 17478 재귀함수가 뭔가요? import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class BOJ17478 { static StringBuilder ans = new StringBuilder(); public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(in.readLine()); ans.append("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.\n"); re(n, ".. 2022. 2. 3.
[BOJ/Node.js] 1786 찾기 결국 kmp 알고리즘 구현 문제 function lpsTable(str) { const len = str.length; let returnTable = new Array(len).fill(0); for (let i = 1, j = 0; i 0 && str[i] !== str[j]) j = returnTable[j - 1]; if (str[i] === str[j]) returnTable[i] = ++j; } return returnTable; } function kmp(long, short) { let table = lpsTable(short), lenLong = long.length, lenShort = short.length; let j = 0, count .. 2022. 1. 30.
[BOJ/Java] 2309 일곱 난쟁이 import java.util.Arrays; import java.util.Scanner; public class Prob2309 { // 제출시 Main으로 바꿔줘야함 static void permutation(int[] arr, int depth) { if (depth == 0) { // depth 0일때 arr는 7개 int sum = 0; for (int height: arr) { sum += height; } // 7개 다 더하고 100이면 해당 arr 출력하고 끝 if (sum == 100) { Arrays.sort(arr); // 무작위로 골라서라고 해도 순서대로 하라고 했기에 정렬 for (int height: arr) { System.out.println(height); } System... 2022. 1. 23.
[BOJ/Python] 16926 배열 돌리기 1 import sys input=sys.stdin.readline n, m, r = map(int, input().split()) arr = [list(map(int, input().split())) for _ in range(n)] for _ in range(r): for i in range(min(n,m)//2): temp = arr[i][i] boundary_x = n - i - 1 boundary_y = m - i - 1 for r in range(i, boundary_y): arr[i][r] = arr[i][r+1] for d in range(i, boundary_x): arr[d][boundary_y] = arr[d+1][boundary_y] for l in range(boundary_y, i,.. 2022. 1. 19.
[BOJ/Python] 15649 N과 M(1) 와 이건 진짜 모르겠다. 재귀함수로 짜보려고 혼자 열심히 짱구 굴려봤지만 결국 다른 풀이들을 참고했다. 재귀함수 스택 쌓아서 구현하는 게 왜 이렇게 어려운지..ㅠ import sys, itertools n, m = map(int,sys.stdin.readline().split()) list_for_print=[]#전역변수 리스트 선언 def bt(): if len(list_for_print) == m:#list 길이랑 m이랑 같으면 출력 print(' '.join(map(str, list_for_print))) for i in range(1, n+1):#1부터 n까지 if i in list_for_print:#해당 숫자i가 list 안에 있으면 뒤에 수행 안하고 다시 for문 복귀 continue lis.. 2021. 10. 15.
[BOJ/Python] 2447 별 찍기 - 10, 11729 하노이 탑 이동 순서 알고리즘 문제 풀다보면 시간복잡도 때문에 약간 강박적으로 for문을 안쓰려고 해서 재귀함수가 이에 대한 해답이 될 줄 알았더니 오히려 성능이 더 떨어진다니.. 섭섭하다. 아무튼 for문 잘 써보자 # 별찍는 함수 만들기 def square(number): # 주어지는 number가 3일 때가 가장 기본 형태 if number == 3: star = ['***','* *','***'] return star # number가 3이 아닌 3의 거듭제곱일 때 재귀함수 이용 else: # 리스트 star의 길이는 number star = [''] * number # square(number//3)의 리스트로부터 number에 대한 star을 만들어줌 for i, s in enumerate(square(number.. 2021. 10. 3.
[BOJ/C] 15757 큰 수 A+B 이 날의 처참한 기록... 이걸 3시간을 붙잡고 있었다. 머리가 깨질것 같다. 3시간전의 처음 2개는 뭣도 모르고 C++이 무슨 파이썬이라도 되는 줄 아는 냥 그냥 입력값을 더하는 코드를 짰던 것이고 2시간의 사투를 벌인 저 900글자를 상회하는 저 치열한 코드들은 하나만 골라서 보면 다음과 같다. #include int main() { char a[10001], b[10001], c[10001]; int a_len, b_len; scanf("%s %s", a, b); for(int i=0;a[i]!=0;i++){a_len=i;}//a 길이 구하기 for(int i=0;b[i]!=0;i++){b_len=i;}//b 길이 구하기 for(int i=0;i 2021. 9. 27.