알고리즘 (63) 썸네일형 리스트형 백준 1418 k-세준수(Kotlin) https://www.acmicpc.net/problem/1418 1418번: K-세준수 첫째 줄에 N, 둘째 줄에 K가 주어진다. N은 100,000보다 작거나 같은 자연수이고, K는 100보다 작거나 같은 자연수이다. www.acmicpc.net 문제 접근 n이하의 자연수 중에 소인수의 최대값이 k보다 작은 수가 몇개인지 구하는 문제 판별하는 수의 약수 중 소수의 최대값이 k보다 작으면 k-세준수로 판별 작성한 코드(시간초과) fun main(args: Array): Unit = with(Scanner(System.`in`)) { val n = nextInt() val k = nextInt() var ans = 0 for(i in 1..n){ var max = 0 //소인수 중 최대값 for (j i.. 백준 1531 - 투명(Kotlin) https://www.acmicpc.net/problem/1531 1531번: 투명 첫째 줄에 N과 M이 주어진다. N은 0보다 크거나 같고, 50보다 작거나 같다. M은 0보다 크거나 같고, 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 종이의 좌표가 주어진다. 왼쪽 아래 모서리의 x, y좌 www.acmicpc.net 문제 접근 이차원 배열에서 주어진 좌표에 해당하는 범위의 수를 수정할 수 있으면 바로 풀리는 문제 정답 코드 import java.util.* fun main(args: Array): Unit = with(Scanner(System.`in`)) { val arr = Array(101) { IntArray(101) } val n = nextInt() val m = nextInt() //.. 백준 1439번 - 뒤집기(Kotlin) https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 문제 접근 연속되는 수를 뒤집어 전체를 0으로 만들거나 1로 만드는 경우의 수 중 시행횟수의 최소값을 구하는 문제 0과 1중 연속되는 수가 끊기는 구간이 더 적은 쪽을 택하여 몇번 끊기는지 세주면 됨 정답코드 import java.util.* fun main(args: Array): Unit = with(Scanner(System.`in`)) { val str = next() var zero = .. 백준 1343 - 폴리오미노(Kotlin) https://www.acmicpc.net/problem/1343 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net 문제접근 X의 개수가 짝수면 A와 B로 표현가능한데 홀 수면 -1을 출력하는 문제라고 생각해서 구현하다가 그냥 XXXX는 AAAA, XX는 BB로 바꾸면 안되나 싶어서 replace를 활용하고, 만약 X가 홀 수여서 X가 남아있으면 -1을 출력하는식으로 구현했다. 정답코드 import java.util.* //XXXX -> AAAA //xx -> BB fun main(args: Array): Unit = with(Scanner(System.`in`)) { val input = readLine()!!... 백준 1316 - 그룹 단어 체커(kotlin) https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때 www.acmicpc.net 문제접근 문자열 안에 반복되는 문자가 또 나오는지 확인하는 문제 문자열의 문자들을 컬랙션에 넣고 이미 넣은 단어가 또 나오면 그룹 단어가 아닌걸로 판별 연속적으로 나오는건 상관없으니 마지막 단어를 변수에 저장해서 검사하려는 단어와 비교 정답코드 import java.util.* fun main(args: Array): Unit = with(Scanner(System.. 파이썬에서 Stack Stack stack은 후입선출(LIFO)의 자료구조. 시간복잡도는 push : O(1), pop : O(1)입니다. push와 pop은 모두 stack의 top에 원소를 추가하거나 삭제하는 형식으로 구현됩니다. 활용예시는 후위 표시법 연산, 괄호 유효성 검사, 웹 브라우저 방문기록(뒤로가기), 깊이 우선탐색(DFS)등이 있습니다. 파이썬에서 Stack 파이썬에서는 stack 자료구조를 따로 제공하지 않는다. 따라서 기본 클래스인 list를 활용하여 stack을 흉내내서 사용한다. 파이썬에서 list를 활용해 stack 메서드 사용하기 1. stack 선언 그냥 빈 리스트를 선언해주면 된다. stack = [] 2. 원소 추가 : push list의 append 메서드를 활용해 리스트의 가장 마지막에 원.. 백준 - 1120 (kotlin) https://www.acmicpc.net/problem/1120 1120번: 문자열 길이가 N으로 같은 문자열 X와 Y가 있을 때, 두 문자열 X와 Y의 차이는 X[i] ≠ Y[i]인 i의 개수이다. 예를 들어, X=”jimin”, Y=”minji”이면, 둘의 차이는 4이다. 두 문자열 A와 B가 주어진다. 이때, A의 www.acmicpc.net 문제접근 문자열 A와 B의 다른점의 최소값을 묻는 문제 A의 길이가 B보다 작으면 A의 앞뒤에 문자를 붙임 아이디어 어차피 최소값을 묻는 문제이므로 굳이 문자열 A에 문자를 붙여가며 비교할 필요 없이 문자열 B를 A의 범위만큼 돌면서 차이점이 최소가 될때를 찾으면 됨(어차피 앞뒤로 B랑 같은 문자를 붙였을때가 최소이므로) 구현 import java.util... 이전 1 ··· 5 6 7 8 다음