전체 글 227

위상 정렬 (Topological Sorting)

위상정렬이란? 위상 정렬은 유향 그래프의 꼭짓점들(vertex)을 변의 방향을 거스르지 않도록 나열하는 것을 의미한다. - 위키백과- 뭐라는거야... 하나도 이해안된다. 그래서 간단하게 설명하면 순서가 정해져있는 것들을 차례대로 정렬하는 것이다. 이렇게 말해도 이해가 안될거다. 간단한 예시를 들어보자. 당신이 밖에서 일정을 마치고 집으로 돌아왔다. 집으로 도착하자마자 샤워부터 해야한다. 그 후 밥을 먹고 잘 수 도 있고 바로 잘 수도 있다. 이때 순서를 구해보자. 아래와 같은 순서가 나온다. 씻기 - 밥먹기 - 자기 이게 뭔 위상정렬이냐 생각할 수도 있다. 하지만, 원리를 설명하고 다시 보자 선행되어야 하는 작업 -> 해당 작업 이후에 할 수 있는 작업 이렇게 나타냈을 떄 위상정렬에서는 자신에게 향해지는..

Algorithm 2023.09.22

[Kotlin] 백준 20529번 : 가장 가까운 세 사람의 심리적 거리 <Silver 1>

https://www.acmicpc.net/problem/20529 20529번: 가장 가까운 세 사람의 심리적 거리 각 테스트 케이스에 대한 답을 정수 형태로 한 줄에 하나씩 출력한다. www.acmicpc.net Code import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter fun main() = with(BufferedReader(InputStreamReader(System.`in`))) { val bw = BufferedWriter(OutputStreamWriter(System.out)) val T = readLine().to..

Bakejoon/Silver 2023.09.21

DO SOPT 33기 Android 파트 - 최종 합격 후기

지원동기 작년 겨울부터 시작한 안드로이드 공부에 점점 지쳐갔다. 흥미가 떨어져서 하기 싫었던 것은 아니다. 그저 러닝메이트가 없고, 막막함이 너무 강했다. 혼자서 공부하다보니 내가 잘 하고있는지도 모르겠고 모르겠는 것을 물어볼 사람도 없어서 외로웠다. 인맥이랄 것도 없이 그저 같이 안드로이드를 공부할 사람이 필요했다. 그러던 중 내 친구가 SW중심대학 공동 해커톤에 나가서 SOPT에서 Android를 하시는 분과 함께 팀프로젝트를 했었다. 결과도 최우수상을 받았고, 그분의 코드와 결과물을 봤는데 너무 잘하셨다고 느꼈다. 그래서 나도 잘 하고싶다는 생각에 솝트에 관심을 가지게 되고 이번 모집 공고를 보게 되었다. 지원하기 전 가장 마음에 걸렸던 부분이 내가 사용하는 기술이었다. 난 Jetapack Comp..

대외활동/SOPT 2023.09.20

비둘기집 원리

비둘기집 원리(Dirichlet's Pigeonhole Principle) 조합론의 기본 원리이다. 간단하게 말한다면 "비둘기가 N마리 있고 M개의 비둘기 집이 있다. 이때, N > M인 경우 하나의 비둘기 집에는 최소한 두 개 이상의 비둘기가 들어간다." 라는 내용이다 생각해보면 정말 당연한 소리다. 하지만 이 당연한 소리가 문제를 푸는데 큰 도움이 된다. 백준 문제 중 20529번이 대표적으로 비둘기집 원리를 사용하는 문제다 https://www.acmicpc.net/problem/20529 20529번: 가장 가까운 세 사람의 심리적 거리 각 테스트 케이스에 대한 답을 정수 형태로 한 줄에 하나씩 출력한다. www.acmicpc.net 조만간 풀고 링크를 첨부하도록 하겠읍니다...

Algorithm 2023.09.20

[Kotlin] 백준 1874번 : 스택 수열 <Silver 2>

https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net Code import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter import java.util.* fun main() = with(Buffered..

Bakejoon/Silver 2023.09.19

[Kotlin] 백준 1764번 : 듣보잡 <Silver 4>

https://www.acmicpc.net/problem/1764 1764번: 듣보잡 첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. www.acmicpc.net Code import java.io.BufferedReader import java.io.BufferedWriter import java.io.InputStreamReader import java.io.OutputStreamWriter fun main() = with(BufferedReader(InputStreamReader(System.`in`))) { val bw = BufferedWrite..

Bakejoon/Silver 2023.09.18

[Kotlin] 백준 1018번 : 체스판 다시 칠하기 <Silver 4>

https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net Code import java.io.BufferedReader import java.io.InputStreamReader import java.lang.Integer.min val ANSWER = mutableListOf( listOf('W','B', 'W', 'B', 'W','B', 'W', 'B'), listOf('B', 'W', 'B', 'W','B', 'W', 'B', 'W'), l..

Bakejoon/Silver 2023.09.17

[Kotlin] Programmers Lv. 1 크기가 작은 부분 문자열

https://school.programmers.co.kr/learn/courses/30/lessons/147355 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Code class Solution { fun solution(t: String, p: String): Int { var answer: Int = 0 var pLen = p.length for (i in 0 .. t.length - pLen){ if (t.substring(i until i + pLen)

Programmers/Lv. 1 2023.09.16

[Kotlin] Programmers Lv. 1 3진법 뒤집기

https://school.programmers.co.kr/learn/courses/30/lessons/68935 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Code class Solution { fun tenToThree(num: Int): String{ // 3으로 나누고, 나머지를 배열에 저장하고 reverse하면 됨. var temp = num var result = mutableListOf() while (temp != 0){ result.add(temp % 3) temp /= 3 } return result.reversed().joinToS..

Programmers/Lv. 1 2023.09.15

[Kotlin] Programmers Lv. 1 최대공약수와 최소공배수

https://school.programmers.co.kr/learn/courses/30/lessons/12940 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr Code class Solution { tailrec fun gcd(num1: Int, num2: Int): Int= if(num2 == 0) num1 else gcd(num2, num1 % num2) fun solution(n: Int, m: Int): IntArray { val gcd = gcd(n,m) return intArrayOf(gcd, (n * m / gcd)) } } 이 문제는 최대..

Programmers/Lv. 1 2023.09.14