온라인 저지62 [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. [PGS/Python] 가장 큰 수 https://programmers.co.kr/learn/courses/30/lessons/42746 문제 설명 해설 주어진 숫자(0 이상의 정수) list에 있는 숫자들을 이어붙여서 만들 수 있는 숫자들 중에서 가장 큰 수를 구해주면 된다. 해설 하려고 보니 생각보다 문제 자체는 이해가 쉬운 문제라서.. numbers return [6, 10, 12] "61210" [3, 30, 34, 5, 9] "9534330" 접근법을 생각해보자면 numbers의 element들을 전부 str화 시키고 각 element의 0번 index의 값끼리 비교하고 같으면 다음 것, 다음 것... 이렇게 비교해서 큰 놈부터 앞으로 가져오면 될 것 같다! def solution(numbers): sorted1= sorted(n.. 2021. 11. 6. [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. [BOJ/C]1157 단어 공부 대형(?) 문자열을 입력하는거는 항상 너무 어렵다.. 코딩 문제를 풀 때마다 나를 괴롭히는 segment fault 런타임 에러... 논리를 알면 뭐하나 데이터 처리를 잘 못하는데 데이터 공부를 해야겠다. #include int main() { char s[1000010], alphabet[30]; int a[30]={0,}, cnt=0, max_index;//array들은 넉넉하게 30칸씩 for(int i=0;i 2021. 9. 25. [BOJ/C]2675 문자열 반복 논리자체는 상당히 간단한 문제였는데 NULL값 처리에서 문제를 겪어서 1시간이 넘도록 헤맸다... #include int main() { int n, r; char s[20]={}; scanf("%d", &n);//입력할 횟수 for(int i=0;i 2021. 9. 25. 이전 1 ··· 3 4 5 6 7 다음