├── .gitignore ├── 3주차 ├── 1254 │ ├── README.md │ ├── 1254_python_yaho.py │ ├── 1254_leo_python.py │ ├── 1254_kotlin_페퍼.kt │ ├── 1254_python_파랑.py │ ├── 1254_python_후디.py │ ├── 1254_python_아서.py │ ├── 1254_python_제로.py │ ├── 1254_python_토르.py │ ├── 1254_java_라라.java │ ├── 1254_java_루나.java │ ├── 1254_python_토닉.py │ ├── 1254_cpp_케이 │ ├── 1254_python_정.py │ ├── 1254_python_이프.py │ ├── java_1254_아리.java │ ├── 1254_java_디우.java │ ├── 1254_java_매트.java │ ├── josh_java_1254.java │ ├── 1254_java_hoho.java │ ├── java_1254_panda.java │ ├── 1254_java_주디.java │ ├── 1254_Java_레넌.java │ ├── 1254_java_연로그.java │ └── Kun_1254.java ├── 11568 │ ├── README.md │ ├── 11568_python_토닉.py │ ├── 11568_python_yaho.py │ ├── 11568_python_파랑.py │ ├── 11568_python_토르.py │ ├── 11568_python_이프.py │ ├── 11568_python_정.py │ ├── 11568_kotlin_페퍼.kt │ ├── 11568_python_제로.py │ ├── 11568_cpp_케이 │ ├── 11568_java_루나.java │ ├── 11568_java_매트.java │ ├── java_11568_panda.java │ ├── 11568_java_렉스.java │ └── 11568_java_짱구.java ├── 13702 │ ├── 13702_python_파랑.py │ ├── README.md │ ├── 13702_python_yaho.py │ ├── 13702_python_정.py │ ├── 13702_python_제로.py │ ├── 13702_python_아서.py │ ├── 13702_python_이프.py │ ├── 13702_python_토르.py │ ├── 13702_cpp_케이 │ └── 13702_java_매트.java ├── 17123 │ ├── README.md │ ├── 17123_python_yaho.py │ ├── 17123_python_아서.py │ ├── 17123_python_이프.py │ ├── 17123_python_파랑.py │ ├── 17123_python_정.py │ ├── 17123_python_토르.py │ └── 17123_python_제로.py └── 3주차.iml ├── 5주차 ├── 5107 │ ├── README.md │ └── 5107_python_제로.py ├── 5904 │ └── README.md ├── 6198 │ ├── README.md │ └── 6198_python_제로.py ├── 11582 │ ├── README.md │ └── 11582_python_제로.py ├── 16432 │ ├── README.md │ └── 16432_python_제로.py └── 20922 │ ├── README.md │ └── 20922_python_제로.py ├── 2주차 ├── 2121 │ ├── README.md │ ├── 2121_python_yaho.py │ ├── 2121_python_제로.py │ ├── 2121_python_아서.py │ ├── 2121_python_파랑.py │ ├── 2121_python_quaritch.py │ ├── Python_2121_토닉.py │ ├── 2121_python_이프.py │ ├── 2121_cpp_케이.cpp │ ├── 2121_정.py │ ├── 2121_java_필즈_test.java │ └── 2121_python_토르.py ├── 11866 │ ├── README.md │ ├── 11866_python_leo.py │ ├── 11866_python_아서.py │ ├── 11866_python_토르.py │ ├── 11866_python_yaho.py │ ├── 11866_python_quaritch.py │ ├── 11866_정.py │ ├── 11866_python_후디.py │ ├── 11866_python_이프.py │ ├── 11866_python_제로.py │ ├── 11866_python_파랑.py │ ├── 11866_kotlin_페퍼.kt │ ├── java_11866_루나.java │ ├── 11866_cpp_케이.cpp │ ├── 11866_java_디우.java │ └── java_11866_panda.java ├── 12789 │ ├── README.md │ ├── 12789_python_quaritch.py │ ├── 12789_python_yaho.py │ ├── 12789_python_파랑.py │ ├── 12789_python_leo.py │ ├── 12789_정.py │ ├── 12789_python_토르.py │ ├── 12789_python_아서.py │ ├── 12789_python_이프.py │ ├── 12789_python_제로.py │ ├── 12789_kotlin_페퍼.kt │ ├── java_12789_panda.java │ └── Python_12789_토닉.py ├── 22941 │ ├── README.md │ ├── 22941_python_yaho.py │ ├── 22941_python_아서.py │ ├── 22941_python_quaritch.py │ ├── 22941_정.py │ ├── Java_22941_토닉.py │ ├── 22941_python_파랑.py │ ├── 22941_python_토르.py │ └── 22941_python_제로.py └── 23827 │ ├── README.md │ ├── 23827_python_yaho.py │ ├── 23827_python_leo.py │ ├── 23827_python_아서.py │ ├── Python_23827_토닉.py │ ├── 23827_python_quaritch.py │ ├── 23827_python_파랑.py │ ├── 23827_python_토르.py │ ├── 23827_python_이프.py │ ├── 23827_python_제로.py │ ├── java_23827_루나.java │ ├── 23827_cpp_케이.cpp │ ├── java_23827_panda.java │ ├── 23827_Java_연로그.java │ ├── 23827_Java_짱구.java │ ├── 23827_java_렉스.java │ ├── 23827_정.py │ ├── java_23827_유콩.java │ ├── 23827_java_매트.java │ ├── 23827_java_윤주리.java │ ├── 23827_java_포키.java │ └── java_23827_아리.java ├── 4주차 ├── 16198 │ ├── README.md │ ├── 16198_python_아서.py │ ├── 16198_python_quaritch.py │ ├── 16198_python_이프.py │ ├── 16198_python_토닉.py │ ├── 16198_python_토르.py │ ├── 16198_python_정.py │ ├── 16198_python_제로.py │ ├── 16198_kotlin_페퍼.kt │ ├── 16198_java_라라.java │ └── 16198_java_매트.java ├── 18232 │ ├── README.md │ ├── 18232_python_파랑.py │ ├── 18232_python_토닉.py │ ├── 18232_python_정.py │ ├── 18232_python_제로.py │ └── 18232_python_quaritch.py └── 21938 │ ├── README.md │ ├── 21938_python_제로.py │ └── 21938_python_quaritch.py ├── 6주차 ├── 14657 │ ├── README.md │ └── 14657_python_yaho.py ├── 14938 │ ├── README.md │ ├── 14938_python_yaho.py │ ├── 14938_python_아서.py │ ├── 14938_python_파랑.py │ ├── 14938_python_quaritch.py │ └── 14938-python-leo.py ├── 24229 │ ├── README.md │ ├── 24229_python_파랑.py │ └── 24229_python_토르.py ├── 24393 │ ├── README.md │ ├── 24393_python_이프.py │ ├── 24393_python_아서.py │ ├── 24393_python_토르.py │ ├── 24393-python-leo.py │ └── 24393_cpp_K.cpp └── 25391 │ ├── README.md │ ├── 25391_python_quaritch.py │ └── 25391_python_이프.py ├── 7주차 ├── 9694 │ └── README.md ├── 13905 │ └── README.md ├── 16288 │ ├── README.md │ ├── 16288_python_raccoon.py │ ├── 16228_python_토르.py │ └── 16288_cpp_K.cpp └── 24499 │ ├── README.md │ ├── 24499_python_제로.py │ ├── 24499_python_아서.py │ ├── 24499_python_quaritch.py │ ├── 24499_python_raccoon.py │ ├── python_2449_yeoleum.py │ ├── 24499_python_이프.py │ ├── 24499_python_leo.py │ ├── 24499_kotlin_페퍼.kt │ ├── Kotlin_24499_이영환.kt │ ├── 24499_cpp_K.cpp │ └── 24499_python_토르.py ├── 8주차 ├── 2694 │ └── README.md ├── 3865 │ └── README.md ├── 10258 │ └── README.md ├── 14906 │ └── README.md └── 16498 │ └── README.md └── 1주차 ├── 4796 ├── 4796_python_yaho.py ├── 4796_python_quaritch.py ├── 4796_python_파랑.py ├── 4796_python_leo.py ├── 4796_python_아서.py ├── 4796_정.py ├── 4796_python_후디.py ├── 4796_python_제로.py ├── 4796_python_토르.py ├── 4796_python_이프.py ├── 4796_Test.java ├── kotlin_4796_페퍼.kt ├── 4796_java_매트.java ├── 4796_java_포키.java ├── 4796_cpp_케이.cpp ├── java_4796_유콩.java ├── java_4796_루나.java ├── 4796_Java_짱구.java ├── Java_4796_Yeoleum.java ├── 4796_java_잉.java ├── 4796_java_윤주리.java ├── 4796_java_아키.java ├── josh_java_4796.java ├── 4796_java_라라.java └── Java_4796_토닉.java ├── 10814 ├── 10814_python_토르.py ├── 10814_python_아서.py ├── 10814_python_제로.py ├── 10814_python_yaho.py ├── 10814_python_leo.py ├── 10814_정.py ├── kotlin_10814_페퍼.kt ├── 10814_python_후디.py ├── 10814_python_quaritch.py ├── 10814_python_이프.py ├── 10814_java_포키.java ├── 10814_python_파랑.py ├── java_10814_아리.java ├── 10814_java_라라.java ├── 10814_java_윤주리.java └── 10814_cpp_케이.cpp ├── 14659 ├── 14659_python_제로.py ├── 14659_python_파랑.py ├── 14659_python_토르.py ├── 14659_python_yaho.py ├── 14659_python_leo.py ├── 14659_python_quaritch.py ├── 14659_정.py ├── 14659_Test.java ├── 14659_python_이프.py ├── 14659_python_아서.py ├── kotlin_14659_페퍼.kt ├── 14659_python_후디.py ├── main.cpp ├── 14659_java_라라.java ├── 14659_java_윤주리.java ├── 14659_java_렉스.java ├── java_14659_아리.java ├── 14659_java_포키.java ├── 14659_Java_짱구.java ├── 14659_java_매트.java ├── java_14659_루나.java ├── java_14659_유콩.java ├── 14659_java_아키.java └── Kun_14659.java └── 17362 ├── 17362_python_아서.py ├── 17362_정.py ├── 17362_python_후디.py ├── 17362_python_이프.py ├── 17362_python_leo.py ├── 17362_python_yaho.py ├── kotlin_17362_페퍼.kt ├── 17362_python_토르.py ├── 17362_python_제로.py ├── 17362_python_quaritch.py ├── 17362_java_라라.java ├── 17362_java_포키.java ├── 17362_Java_짱구.java ├── java_17362_panda.java ├── 17362_java_렉스.java ├── josh_java_17362.java ├── java_17362_유콩.java ├── Kun_17362.java ├── 17362_java_아키.java ├── Java_17362_Yeoleum.java ├── 17362_java_슬로.java ├── 17362_java_윤주리.java ├── 17362_cpp_케이.cpp ├── 17362_java_잉.java ├── java_17362_아리.java ├── 17362_java_유현호.java ├── 17362_java_연로그.java ├── java_17362_루키.java ├── 17362_python_파랑.py ├── 17362_Test.java ├── Java_17362_이영환.java ├── java_17362_루나.java ├── 17362_java_라쿤.java └── 17362_Java_레넌.java /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | .DS_Store 3 | .iml 4 | .xml 5 | -------------------------------------------------------------------------------- /3주차/13702/13702_python_파랑.py: -------------------------------------------------------------------------------- 1 | # 13702 이상한 술집 2 | 3 | -------------------------------------------------------------------------------- /5주차/5107/README.md: -------------------------------------------------------------------------------- 1 | ## 2 | https://www.acmicpc.net/problem/5107 3 | -------------------------------------------------------------------------------- /2주차/2121/README.md: -------------------------------------------------------------------------------- 1 | ## 넷이 놀기 2 | https://www.acmicpc.net/problem/2121 3 | -------------------------------------------------------------------------------- /4주차/21938/README.md: -------------------------------------------------------------------------------- 1 | ## 영상처리 2 | https://www.acmicpc.net/problem/21938 3 | -------------------------------------------------------------------------------- /5주차/16432/README.md: -------------------------------------------------------------------------------- 1 | ## 2 | https://www.acmicpc.net/problem/16432 3 | -------------------------------------------------------------------------------- /5주차/5904/README.md: -------------------------------------------------------------------------------- 1 | ## Moo 2 | https://www.acmicpc.net/problem/5904 3 | -------------------------------------------------------------------------------- /6주차/25391/README.md: -------------------------------------------------------------------------------- 1 | ## 특별상 2 | https://www.acmicpc.net/problem/25391 3 | -------------------------------------------------------------------------------- /7주차/13905/README.md: -------------------------------------------------------------------------------- 1 | ## 세부 2 | https://www.acmicpc.net/problem/13905 3 | -------------------------------------------------------------------------------- /8주차/14906/README.md: -------------------------------------------------------------------------------- 1 | ## 스러피 2 | https://www.acmicpc.net/problem/14906 3 | -------------------------------------------------------------------------------- /2주차/23827/README.md: -------------------------------------------------------------------------------- 1 | ## 수열 (Easy) 2 | https://www.acmicpc.net/problem/23827 3 | -------------------------------------------------------------------------------- /3주차/11568/README.md: -------------------------------------------------------------------------------- 1 | ### 민균이의 계략 2 | https://www.acmicpc.net/problem/11568 3 | -------------------------------------------------------------------------------- /3주차/1254/README.md: -------------------------------------------------------------------------------- 1 | ### 팰린드롬 만들기 2 | https://www.acmicpc.net/problem/1254 3 | -------------------------------------------------------------------------------- /3주차/13702/README.md: -------------------------------------------------------------------------------- 1 | ### 이상한 술집 2 | https://www.acmicpc.net/problem/13702 3 | -------------------------------------------------------------------------------- /3주차/17123/README.md: -------------------------------------------------------------------------------- 1 | ### 배열 놀이 2 | https://www.acmicpc.net/problem/17123 3 | -------------------------------------------------------------------------------- /4주차/16198/README.md: -------------------------------------------------------------------------------- 1 | ## 에너지 모으기 2 | https://www.acmicpc.net/problem/16198 3 | -------------------------------------------------------------------------------- /4주차/18232/README.md: -------------------------------------------------------------------------------- 1 | ## 텔레포트 정거장 2 | https://www.acmicpc.net/problem/18232 3 | -------------------------------------------------------------------------------- /5주차/11582/README.md: -------------------------------------------------------------------------------- 1 | ## 치킨 TOP N 2 | https://www.acmicpc.net/problem/11582 3 | -------------------------------------------------------------------------------- /5주차/20922/README.md: -------------------------------------------------------------------------------- 1 | ## 겹치는 건 싫어 2 | https://www.acmicpc.net/problem/20922 3 | -------------------------------------------------------------------------------- /5주차/6198/README.md: -------------------------------------------------------------------------------- 1 | ## 옥상 정원 꾸미기 2 | https://www.acmicpc.net/problem/6198 3 | -------------------------------------------------------------------------------- /6주차/14938/README.md: -------------------------------------------------------------------------------- 1 | ## 서강그라운드 2 | https://www.acmicpc.net/problem/14938 3 | -------------------------------------------------------------------------------- /6주차/24229/README.md: -------------------------------------------------------------------------------- 1 | ## 모두싸인 출근길 2 | https://www.acmicpc.net/problem/24229 3 | -------------------------------------------------------------------------------- /6주차/24393/README.md: -------------------------------------------------------------------------------- 1 | ## 조커 찾기 2 | https://www.acmicpc.net/problem/24393 3 | -------------------------------------------------------------------------------- /7주차/24499/README.md: -------------------------------------------------------------------------------- 1 | ## blobyum 2 | https://www.acmicpc.net/problem/24499 3 | -------------------------------------------------------------------------------- /8주차/16498/README.md: -------------------------------------------------------------------------------- 1 | ## 작은 벌점 2 | https://www.acmicpc.net/problem/16498 3 | -------------------------------------------------------------------------------- /2주차/11866/README.md: -------------------------------------------------------------------------------- 1 | ### 요세푸스 문제 0 2 | https://www.acmicpc.net/problem/11866 3 | -------------------------------------------------------------------------------- /2주차/12789/README.md: -------------------------------------------------------------------------------- 1 | ### 도키도키 간식드리미 2 | https://www.acmicpc.net/problem/12789 3 | -------------------------------------------------------------------------------- /2주차/22941/README.md: -------------------------------------------------------------------------------- 1 | ### RPG 마스터 오명진 2 | https://www.acmicpc.net/problem/22941 3 | -------------------------------------------------------------------------------- /6주차/14657/README.md: -------------------------------------------------------------------------------- 1 | ## 준오는 최종인재야!! 2 | https://www.acmicpc.net/problem/14657 3 | -------------------------------------------------------------------------------- /8주차/10258/README.md: -------------------------------------------------------------------------------- 1 | ## Switch Array 2 | https://www.acmicpc.net/problem/10258 3 | -------------------------------------------------------------------------------- /7주차/16288/README.md: -------------------------------------------------------------------------------- 1 | ## Passport Control 2 | https://www.acmicpc.net/problem/16288 3 | -------------------------------------------------------------------------------- /8주차/2694/README.md: -------------------------------------------------------------------------------- 1 | ## Equal Sum Partitions 2 | https://www.acmicpc.net/problem/2694 3 | -------------------------------------------------------------------------------- /8주차/3865/README.md: -------------------------------------------------------------------------------- 1 | ## Membership Management 2 | https://www.acmicpc.net/problem/3865 3 | -------------------------------------------------------------------------------- /7주차/9694/README.md: -------------------------------------------------------------------------------- 1 | ## 무엇을 아느냐가 아니라 누구를 아느냐가 문제다 2 | https://www.acmicpc.net/problem/9694 3 | -------------------------------------------------------------------------------- /3주차/1254/1254_python_yaho.py: -------------------------------------------------------------------------------- 1 | s = input() 2 | 3 | for i in range(len(s)): 4 | if s[i:] == s[i:][::-1]: 5 | print(len(s) + i) 6 | break 7 | -------------------------------------------------------------------------------- /1주차/17362/17362_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | input = sys.stdin.readline 3 | 4 | seq = [2,1,2,3,4,5,4,3] 5 | n = int(input()) 6 | res = n % 8 7 | print(seq[res]) -------------------------------------------------------------------------------- /1주차/17362/17362_정.py: -------------------------------------------------------------------------------- 1 | A = int(input()) 2 | 3 | finger_idx = ((A-1)%8) + 1 4 | 5 | if finger_idx > 5: 6 | finger_idx = 10 - finger_idx 7 | 8 | print(finger_idx) -------------------------------------------------------------------------------- /1주차/17362/17362_python_후디.py: -------------------------------------------------------------------------------- 1 | # 수학은 체육과목 입니다 2 2 | # https://www.acmicpc.net/problem/17362 3 | 4 | n = int(input()) 5 | l = [1, 2, 3, 4, 5, 4, 3, 2] 6 | print(l[n % 8 - 1]) -------------------------------------------------------------------------------- /1주차/17362/17362_python_이프.py: -------------------------------------------------------------------------------- 1 | 2 | target = int(input()) - 1 3 | 4 | answer = (target % 8 + 1) 5 | 6 | if (answer > 5): 7 | answer = (8 - answer) + 2 8 | 9 | print(answer) 10 | -------------------------------------------------------------------------------- /1주차/10814/10814_python_토르.py: -------------------------------------------------------------------------------- 1 | N = int(input()) 2 | members = [list(input().split()) for _ in range(N)] 3 | members.sort(key = lambda x: (int(x[0]))) 4 | for member in members: 5 | print(member[0], member[1]) 6 | -------------------------------------------------------------------------------- /1주차/4796/4796_python_yaho.py: -------------------------------------------------------------------------------- 1 | i = 1 2 | while True: 3 | l, p, v = map(int, input().split()) 4 | if l == p == v == 0: 5 | break 6 | result = v//p*l + min(v % p, l) 7 | print("Case %d: %d" % (i, result)) 8 | i += 1 9 | -------------------------------------------------------------------------------- /1주차/17362/17362_python_leo.py: -------------------------------------------------------------------------------- 1 | def solution(number): 2 | remainder = number % 8 3 | if remainder in [0, 6, 7]: 4 | return (10 - number) % 8 5 | return remainder 6 | 7 | 8 | n = int(input()) 9 | print(solution(n)) 10 | -------------------------------------------------------------------------------- /1주차/17362/17362_python_yaho.py: -------------------------------------------------------------------------------- 1 | n = int(input()) 2 | n %= 8 3 | if n == 1: 4 | print(1) 5 | elif n in [2, 0]: 6 | print(2) 7 | elif n in [3, 7]: 8 | print(3) 9 | elif n in [4, 6]: 10 | print(4) 11 | elif n == 5: 12 | print(5) 13 | -------------------------------------------------------------------------------- /1주차/10814/10814_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | n = int(input()) 6 | m = [] 7 | for _ in range(n): 8 | m.append(list(input().split())) 9 | m.sort(key=lambda x: int(x[0])) 10 | for x in m: 11 | print(int(x[0]), x[1]) 12 | -------------------------------------------------------------------------------- /1주차/17362/kotlin_17362_페퍼.kt: -------------------------------------------------------------------------------- 1 | fun main() { 2 | val n = readln().toInt() 3 | 4 | when (n % 8) { 5 | 1 -> println(1) 6 | 0, 2 -> println(2) 7 | 3, 7 -> println(3) 8 | 4, 6 -> println(4) 9 | 5 -> println(5) 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /2주차/23827/23827_python_yaho.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | n = int(sys.stdin.readline()) 4 | li = list(map(int, sys.stdin.readline().split())) 5 | sum = sum(li) 6 | result = 0 7 | 8 | for l in li: 9 | sum -= l 10 | result += sum * l 11 | 12 | print(result % 1000000007) 13 | -------------------------------------------------------------------------------- /1주차/17362/17362_python_토르.py: -------------------------------------------------------------------------------- 1 | N = int(input()) 2 | 3 | if N % 8 == 1: 4 | print(1) 5 | elif N % 8 == 2 or N % 8 == 0: 6 | print(2) 7 | elif N % 8 == 3 or N % 8 == 7: 8 | print(3) 9 | elif N % 8 == 4 or N % 8 == 6: 10 | print(4) 11 | else: 12 | print(5) 13 | 14 | -------------------------------------------------------------------------------- /2주차/23827/23827_python_leo.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | answer = 0 4 | N = int(sys.stdin.readline()) 5 | array = list(map(int, sys.stdin.readline().split())) 6 | total = sum(array) 7 | for i in array[:-1]: 8 | total -= i 9 | answer += i * total 10 | print(answer % 1000000007) 11 | -------------------------------------------------------------------------------- /2주차/23827/23827_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | n = int(input()) 6 | seq = list(map(int, input().split())) 7 | tot = sum(seq) 8 | res = 0 9 | 10 | for num in seq: 11 | tot -= num 12 | res += num * tot 13 | print(res % 1000000007) 14 | 15 | 16 | -------------------------------------------------------------------------------- /1주차/10814/10814_python_제로.py: -------------------------------------------------------------------------------- 1 | n = int(input()) 2 | 3 | # 리스트 4 | lst = [] 5 | for i in range(n): 6 | age, name = map(str, input().split()) 7 | lst.append((int(age), name)) 8 | 9 | # 정렬 10 | lst.sort(key=lambda x: x[0]) 11 | 12 | # 출력 13 | for user in lst: 14 | print(user[0], user[1]) 15 | -------------------------------------------------------------------------------- /2주차/23827/Python_23827_토닉.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | N = int(input()) 6 | A = list(map(int, input().rstrip().split())) 7 | 8 | A_sum = sum(A) 9 | result = 0 10 | 11 | for a in A: 12 | A_sum -= a 13 | result += a * A_sum 14 | 15 | print(result % 1000000007) 16 | -------------------------------------------------------------------------------- /1주차/10814/10814_python_yaho.py: -------------------------------------------------------------------------------- 1 | from operator import itemgetter 2 | import sys 3 | readline = sys.stdin.readline 4 | 5 | n = int(readline()) 6 | members = [readline() for _ in range(n)] 7 | 8 | members.sort(key=int(itemgetter(0))) 9 | 10 | for member in members: 11 | print(member[0], member[1]) 12 | -------------------------------------------------------------------------------- /1주차/4796/4796_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 4796번 2 | # 캠핑 3 | 4 | import sys 5 | readline = sys.stdin.readline 6 | 7 | case = 0 8 | while True: 9 | L, P, V = map(int, readline().rstrip().split()) 10 | if V == 0: 11 | break 12 | case += 1 13 | print(f'Case {case}: {V // P * L + min(L, V % P)}') 14 | -------------------------------------------------------------------------------- /1주차/4796/4796_python_파랑.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | case_num = 1 4 | while True: 5 | l, p, v = map(int, sys.stdin.readline().split()) 6 | if l == 0 and p == 0 and v == 0: 7 | break 8 | result = (v // p) * l + min(l, v % p) 9 | print("Case %d: %d" % (case_num, result)) 10 | case_num += 1 11 | -------------------------------------------------------------------------------- /5주차/11582/11582_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | input = sys.stdin.readline 3 | 4 | n = int(input()) 5 | lst = list(map(int, input().split())) 6 | k = int(input()) 7 | 8 | # 한번에 정렬할 개수 9 | hop = n//k 10 | answer = [] 11 | for i in range(0, len(lst), hop): 12 | answer += sorted(lst[i:i+hop]) 13 | 14 | print(*answer) -------------------------------------------------------------------------------- /1주차/17362/17362_python_제로.py: -------------------------------------------------------------------------------- 1 | n = int(input()) 2 | 3 | answer = 0 4 | # 1 5 | if n%8 == 1: 6 | answer = 1 7 | # 2 8 | elif n%8 == 2 or n%8 == 0: 9 | answer = 2 10 | # 3 11 | elif n%4 == 3: 12 | answer = 3 13 | # 5 14 | elif n%8 == 5: 15 | answer = 5 16 | else: 17 | answer = 4 18 | 19 | print(answer) -------------------------------------------------------------------------------- /1주차/4796/4796_python_leo.py: -------------------------------------------------------------------------------- 1 | def solution(case): 2 | return (case[2] // case[1]) * case[0] + min((case[2] % case[1]), case[0]) 3 | 4 | 5 | k = 1 6 | while True: 7 | line = list(map(int, input().split())) 8 | if sum(line) == 0: 9 | break 10 | print(f"Case {k}: {solution(line)}") 11 | k += 1 12 | -------------------------------------------------------------------------------- /1주차/4796/4796_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | i = 1 6 | while True: 7 | l, p, v = map(int, input().split()) 8 | if l == p == v == 0: 9 | break 10 | nums = (v // p) * l 11 | nums += min((v % p), l) 12 | print("Case %d: %d" % (i, nums)) 13 | i += 1 14 | -------------------------------------------------------------------------------- /3주차/11568/11568_python_토닉.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | N = int(input()) 6 | cards = list(map(int, input().split())) 7 | LIS = [1] * N 8 | for i in range(1, N): 9 | for j in range(i): 10 | if cards[i] > cards[j]: 11 | LIS[i] = max(LIS[i], LIS[j]+1) 12 | 13 | print(max(LIS)) 14 | -------------------------------------------------------------------------------- /1주차/17362/17362_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 17362번 2 | # 수학은 체육과목 입니다 2 3 | 4 | import sys 5 | readline = sys.stdin.readline 6 | 7 | remainder = int(readline()) % 8 8 | 9 | if remainder == 0: 10 | print(2) 11 | elif remainder == 7: 12 | print(3) 13 | elif remainder == 6: 14 | print(4) 15 | else: 16 | print(remainder) 17 | -------------------------------------------------------------------------------- /1주차/4796/4796_정.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | case_num = 0 4 | 5 | for line in sys.stdin: 6 | L, P, V = map(int, line.split()) 7 | if L == 0: break 8 | 9 | case_num += 1 10 | full_days = (V//P) * L 11 | leftover_days = min(L, (V%P)) 12 | count = full_days + leftover_days 13 | 14 | print(f'Case {case_num}: {count}') -------------------------------------------------------------------------------- /1주차/10814/10814_python_leo.py: -------------------------------------------------------------------------------- 1 | def solution(people): 2 | return sorted(people, key=lambda x: (x[1], x[0])) 3 | 4 | 5 | people = [] 6 | for i in range(int(input())): 7 | line = input().split() 8 | people.append([i + 1, int(line[0]), line[1]]) 9 | 10 | for person in solution(people): 11 | print(f"{person[1]} {person[2]}") 12 | -------------------------------------------------------------------------------- /3주차/11568/11568_python_yaho.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | readline = sys.stdin.readline 4 | 5 | n = int(readline()) 6 | li = list(map(int, readline().split())) 7 | 8 | cnt = [1] * n 9 | for i in range(1, n): 10 | for j in range(i): 11 | if li[j] < li[i]: 12 | cnt[i] = max(cnt[i], cnt[j] + 1) 13 | 14 | print(max(cnt)) 15 | -------------------------------------------------------------------------------- /7주차/24499/24499_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | n, k = map(int, input().split()) 6 | lst = list(map(int, input().split())) 7 | dp = [0] * len(lst) 8 | lst = lst + lst 9 | dp[0] = sum(lst[n - k + 1:n + 1]) 10 | for i in range(1, len(dp)): 11 | dp[i] = dp[i-1] + lst[i+n] - lst[i+n-k] 12 | print(max(dp)) -------------------------------------------------------------------------------- /1주차/14659/14659_python_제로.py: -------------------------------------------------------------------------------- 1 | n = int(input()) 2 | lst = list(map(int, input().split())) 3 | 4 | answer = 0 5 | maxNum = 0 6 | cnt = 0 7 | 8 | for i in lst: 9 | # 6 4 / 10 2 5 7 / 11 10 | if i > maxNum: 11 | maxNum = i 12 | cnt = 0 13 | else: 14 | cnt += 1 15 | answer = max(answer, cnt) 16 | 17 | print(answer) -------------------------------------------------------------------------------- /2주차/11866/11866_python_leo.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | 4 | N, K = map(int, sys.stdin.readline().split()) 5 | K -= 1 6 | circle = list(range(1, N + 1)) 7 | answer = [] 8 | index = 0 9 | for _ in range(N): 10 | index = (index + K) % len(circle) 11 | answer.append(circle.pop(index)) 12 | 13 | print(f"<{', '.join(map(str, answer))}>", end="") 14 | -------------------------------------------------------------------------------- /2주차/23827/23827_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 23827번 2 | # 수열 (Easy) 3 | 4 | import sys 5 | readline = sys.stdin.readline 6 | 7 | N = int(readline()) 8 | A = list(map(int, readline().rstrip().split())) 9 | sum = sum(A) 10 | answer = 0 11 | 12 | for number in A: 13 | sum -= number 14 | answer += number * sum 15 | 16 | print(answer % 1000000007) 17 | -------------------------------------------------------------------------------- /2주차/23827/23827_python_파랑.py: -------------------------------------------------------------------------------- 1 | # 23827 수열 (Easy) 2 | 3 | import sys 4 | 5 | readline = sys.stdin.readline 6 | 7 | n = int(readline()) 8 | array = list(map(int, readline().split())) 9 | 10 | sum = sum(array) 11 | res = 0 12 | for num in array[::-1]: 13 | sum -= num 14 | res += sum * num 15 | res %= 1000000007 16 | 17 | print(res) 18 | -------------------------------------------------------------------------------- /1주차/10814/10814_정.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | N = int(input()) 6 | 7 | members = [] 8 | 9 | for idx in range(N): 10 | age, name = input().split() 11 | members.append((int(age), name, idx)) 12 | 13 | members.sort(key=lambda x:(x[0], x[2])) 14 | 15 | for member in members: 16 | print(f'{member[0]} {member[1]}') -------------------------------------------------------------------------------- /1주차/17362/17362_java_라라.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | 3 | public class BOJ_17362 { 4 | 5 | public static void main(String[] args) { 6 | Scanner sc = new Scanner(System.in); 7 | int n = sc.nextInt(); 8 | int[] answers = {2, 1, 2, 3, 4, 5, 4, 3}; 9 | 10 | System.out.println(answers[n % 8]); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /1주차/4796/4796_python_후디.py: -------------------------------------------------------------------------------- 1 | # 캠핑 2 | # https://www.acmicpc.net/problem/4796 3 | 4 | case_list = [] 5 | 6 | index = 0 7 | while True: 8 | l, p, v = list(map(int, input().split(" "))) 9 | if not l + p + v: 10 | break 11 | 12 | day = v // p * l + min(l, v - (v // p) * p) 13 | 14 | print(f"Case {index + 1}: {day}") 15 | 16 | index += 1 -------------------------------------------------------------------------------- /2주차/11866/11866_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from collections import deque 3 | 4 | input = sys.stdin.readline 5 | 6 | n, k = map(int, input().split()) 7 | table = deque(i for i in range(1, n + 1)) 8 | 9 | result = [] 10 | while table: 11 | table.rotate(-k) 12 | result.append(table.pop()) 13 | 14 | print('<' + ', '.join(map(str, result)) + '>') 15 | -------------------------------------------------------------------------------- /2주차/11866/11866_python_토르.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | 3 | N, K = map(int, input().split()) 4 | 5 | people = [i for i in range(1, N+1)] 6 | queue = deque(people) 7 | answer = [] 8 | 9 | while queue: 10 | queue.rotate(- (K - 1)) 11 | answer.append(queue.popleft()) 12 | 13 | content = ", ".join(map(str, answer)) 14 | print(f"<{content}>") 15 | -------------------------------------------------------------------------------- /1주차/4796/4796_python_제로.py: -------------------------------------------------------------------------------- 1 | case = 1 2 | 3 | while 1: 4 | L, P, V = map(int, input().split()) 5 | if L == 0 and P == 0 and V==0: 6 | break 7 | 8 | step1 = V // P 9 | step2 = V - step1 * P 10 | step2 = min(L, step2) 11 | result = step1 * L + step2 12 | 13 | # 출력 14 | print("Case %d: %d" %(case, result)) 15 | case += 1 16 | -------------------------------------------------------------------------------- /2주차/11866/11866_python_yaho.py: -------------------------------------------------------------------------------- 1 | n, k = map(int, input().split()) 2 | 3 | index = 0 4 | li = [x for x in range(1, n+1)] 5 | result = [] 6 | 7 | while len(li) != 0: 8 | index += k-1 9 | if index > len(li) - 1: 10 | index %= len(li) 11 | tmp = li.pop(index) 12 | result.append(tmp) 13 | 14 | print("<" + ", ".join(map(str, result)) + ">") 15 | -------------------------------------------------------------------------------- /7주차/24499/24499_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | n, k = map(int, input().split()) 6 | taste = list(map(int, input().split())) 7 | taste += taste 8 | 9 | lt = 0 10 | psum = [0] * 2 * n 11 | psum[k - 1] = sum(taste[:k]) 12 | 13 | for i in range(k, n + k): 14 | psum[i] = psum[i - 1] + taste[i] - taste[i - k] 15 | 16 | print(max(psum)) 17 | -------------------------------------------------------------------------------- /2주차/23827/23827_python_토르.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | 3 | N = int(input()) 4 | numbers = list(map(int, input().split())) 5 | 6 | answer = 0 7 | MOD = 1000000007 8 | total_sum = sum(numbers) 9 | cum_sum = 0 10 | 11 | for i in range(len(numbers)): 12 | cum_sum += numbers[i] 13 | answer += (numbers[i] * (total_sum - cum_sum)) % MOD 14 | 15 | print((answer % MOD)) 16 | -------------------------------------------------------------------------------- /3주차/11568/11568_python_파랑.py: -------------------------------------------------------------------------------- 1 | # 11568 민균이의 계략 2 | 3 | import sys 4 | 5 | readline = sys.stdin.readline 6 | 7 | n = int(readline()) 8 | cards = list(map(int, readline().split())) 9 | 10 | count = [1] * n 11 | for i in range(1, n): 12 | for j in range(i): 13 | if cards[j] < cards[i]: 14 | count[i] = max(count[i], count[j] + 1) 15 | 16 | print(max(count)) 17 | -------------------------------------------------------------------------------- /1주차/14659/14659_python_파랑.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | readline = sys.stdin.readline 4 | 5 | n = int(readline()) 6 | tops = list(map(int, readline().split())) 7 | 8 | result = count = max_top = 0 9 | for top in tops: 10 | if top > max_top: 11 | count = 0 12 | max_top = top 13 | else: 14 | count += 1 15 | result = max(result, count) 16 | 17 | print(result) 18 | -------------------------------------------------------------------------------- /2주차/2121/2121_python_yaho.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | n = int(sys.stdin.readline()) 4 | a, b = map(int, sys.stdin.readline().split()) 5 | li = [] 6 | for i in range(n): 7 | li.append(tuple(map(int, sys.stdin.readline().split()))) 8 | li = set(li) 9 | cnt = 0 10 | 11 | for x, y in li: 12 | if (x+a, y) in li and (x, y+b) in li and (x+a, y+b) in li: 13 | cnt += 1 14 | 15 | print(cnt) 16 | -------------------------------------------------------------------------------- /2주차/2121/2121_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | n = int(sys.stdin.readline()) 4 | a, b = map(int, sys.stdin.readline().split()) 5 | lst = [] 6 | for i in range(n): 7 | lst.append(tuple(map(int, sys.stdin.readline().split()))) 8 | lst = set(lst) 9 | answer = 0 10 | for x, y in lst: 11 | if (x+a, y) in lst and (x,y+b) in lst and (x+a, y+b) in lst: 12 | answer += 1 13 | 14 | print(answer) -------------------------------------------------------------------------------- /3주차/11568/11568_python_토르.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | import sys 3 | 4 | N = int(input()) 5 | numbers = list(map(int, input().split())) 6 | 7 | # dp[i] = i번째 숫자를 포함하여 순증가하는 배열의 최대 길이 8 | dp = [1] * len(numbers) 9 | 10 | for i in range(1, len(numbers)): 11 | for j in range(i): 12 | if numbers[i] > numbers[j]: 13 | dp[i] = max(dp[i], dp[j] + 1) 14 | 15 | print(max(dp)) -------------------------------------------------------------------------------- /3주차/1254/1254_leo_python.py: -------------------------------------------------------------------------------- 1 | def solution(words): 2 | queue = list(map(str, words)) 3 | result = 0 4 | while queue: 5 | word = queue.pop(0) 6 | if not queue: 7 | return result * 2 + 1 8 | if word == queue[-1]: 9 | queue.pop() 10 | result += 1 11 | return result * 2 12 | 13 | 14 | words = input() 15 | 16 | print(solution(words)) 17 | -------------------------------------------------------------------------------- /2주차/11866/11866_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 11866번 2 | # 요세푸스 문제 0 3 | 4 | import sys 5 | readline = sys.stdin.readline 6 | 7 | n, k = map(int, readline().split()) 8 | circle = [i for i in range(1, n + 1)] 9 | order = 0 10 | ans = [] 11 | 12 | for i in range(n, 0, -1): 13 | order = (order + k - 1) % i 14 | temp = circle.pop(order) 15 | ans.append(temp) 16 | 17 | print("<" + str(ans)[1:-1] + ">") 18 | -------------------------------------------------------------------------------- /1주차/10814/kotlin_10814_페퍼.kt: -------------------------------------------------------------------------------- 1 | fun main() { 2 | val n = readln().toInt() 3 | 4 | val members = ArrayList>() 5 | for (i in 1..n) { 6 | val member = readln().split(" ") 7 | members.add(member[0].toInt() to member[1]) 8 | } 9 | 10 | members.sortBy { it.first } 11 | 12 | members.forEach { 13 | println("${it.first} ${it.second}") 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /1주차/4796/4796_python_토르.py: -------------------------------------------------------------------------------- 1 | # TC 분석 2 | # 연속하는 8일중 5일동안 사용가능. 휴가는 20일 3 | case_count = 1 4 | while True: 5 | L, P, V = map(int, input().split()) # 연속하는 P일중, L일동안 사용 가능. V일짜리 휴가 시작 6 | if L == 0 and P == 0 and V == 0: 7 | break 8 | 9 | answer = 0 10 | answer += (V // P) * L 11 | answer += min((V % P), L) 12 | print(f"Case {case_count}: {answer}") 13 | case_count += 1 14 | 15 | -------------------------------------------------------------------------------- /2주차/23827/23827_python_이프.py: -------------------------------------------------------------------------------- 1 | limit = 1000000007 2 | 3 | size = int(input()) 4 | 5 | numbers = list(map(int, input().split())) 6 | total = sum(numbers) % limit 7 | 8 | answer = 0 9 | for i in range(size-1): 10 | current = numbers[i] 11 | 12 | total -= current 13 | if (total < 0): 14 | total += limit 15 | 16 | answer += current * total 17 | answer %= limit 18 | 19 | print(answer) 20 | -------------------------------------------------------------------------------- /1주차/14659/14659_python_토르.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | N = int(input()) 4 | hills = list(map(int, input().split())) 5 | 6 | current_height = 0 7 | max_height = 0 8 | count = 0 9 | answer = 0 10 | 11 | for i in range(len(hills)): 12 | if hills[i] > max_height: 13 | count = 0 14 | max_height = hills[i] 15 | else: 16 | count += 1 17 | 18 | answer = max(answer, count) 19 | 20 | print(answer) -------------------------------------------------------------------------------- /2주차/11866/11866_정.py: -------------------------------------------------------------------------------- 1 | N, K = map(int, input().split()) 2 | 3 | nums = [n for n in range(1, N+1)] 4 | num_order = [] 5 | 6 | counter = 0 7 | while nums: 8 | cur = nums.pop(0) 9 | counter += 1 10 | if counter < K: 11 | nums.append(cur) 12 | continue 13 | num_order.append(cur) 14 | counter = 0 15 | 16 | num_order = ", ".join(map(str, num_order)) 17 | print(f'<{num_order}>') 18 | 19 | -------------------------------------------------------------------------------- /2주차/2121/2121_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | n = int(input()) 6 | a, b = map(int, input().split()) 7 | dots = set(tuple(map(int, input().split())) for _ in range(n)) 8 | 9 | res = 0 10 | for (x, y) in dots: 11 | if (x + a, y) not in dots: continue 12 | if (x, y + b) not in dots: continue 13 | if (x + a, y + b) not in dots: continue 14 | res += 1 15 | print(res) 16 | -------------------------------------------------------------------------------- /2주차/2121/2121_python_파랑.py: -------------------------------------------------------------------------------- 1 | # 2121 넷이 놀기 2 | 3 | import sys 4 | 5 | readline = sys.stdin.readline 6 | 7 | n = int(readline()) 8 | a, b = map(int, readline().split()) 9 | points = set(tuple(map(int, readline().split())) for _ in range(n)) 10 | 11 | res = 0 12 | for x, y in points: 13 | if (x + a, y) in points and (x + a, y + b) in points and (x, y + b) in points: 14 | res += 1 15 | 16 | print(res) 17 | -------------------------------------------------------------------------------- /3주차/11568/11568_python_이프.py: -------------------------------------------------------------------------------- 1 | import sys 2 | input = sys.stdin.readline 3 | 4 | def solution(): 5 | dp = [0] * 1001 6 | 7 | size = int(input()) 8 | numbers = [int(i) for i in input().split()] 9 | 10 | for i in range(size): 11 | number = numbers[i] 12 | dp[i] = 1 + max([dp[j] for j in range(i) if numbers[j] < number] + [0]) 13 | 14 | return max(dp) 15 | 16 | print(solution()) 17 | -------------------------------------------------------------------------------- /1주차/14659/14659_python_yaho.py: -------------------------------------------------------------------------------- 1 | import sys 2 | readline = sys.stdin.readline() 3 | 4 | n = int(readline()) 5 | heights = list(map(int, readline().strip().split())) 6 | 7 | result, count, max_height = 0 8 | for height in heights: 9 | if height > max_height: 10 | max_height = height 11 | count = 0 12 | else: 13 | count += 1 14 | result = max(result, count) 15 | 16 | print(result) 17 | -------------------------------------------------------------------------------- /7주차/24499/24499_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 24499번 2 | # blobyum 3 | 4 | import sys 5 | 6 | readline = sys.stdin.readline 7 | 8 | N, K = map(int, readline().rstrip().split()) 9 | A = list(map(int, readline().rstrip().split())) 10 | A += A 11 | 12 | l, r = 0, K 13 | tmp = sum(A[:K]) 14 | ans = 0 15 | 16 | for _ in range(N): 17 | tmp += A[r] - A[l] 18 | ans = max(ans, tmp) 19 | l += 1 20 | r += 1 21 | 22 | print(ans) 23 | -------------------------------------------------------------------------------- /6주차/25391/25391_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 25391번 2 | # 특별상 3 | 4 | import sys 5 | 6 | readline = sys.stdin.readline 7 | 8 | N, M, K = map(int, readline().rstrip().split()) 9 | scores = [tuple(map(int, readline().rstrip().split())) for _ in range(N)] 10 | referee = sorted(scores, key=lambda x: -x[1]) 11 | organizer = sorted(referee[K:], key=lambda x: -x[0]) 12 | print(sum([x[0] for x in referee[:K]]) + sum([x[0] for x in organizer[:M]])) 13 | -------------------------------------------------------------------------------- /1주차/14659/14659_python_leo.py: -------------------------------------------------------------------------------- 1 | def solution(dragons): 2 | maximum = 0 3 | count = 0 4 | answer = 0 5 | for i in dragons: 6 | if i < maximum: 7 | count += 1 8 | else: 9 | maximum = i 10 | answer = count 11 | count = 0 12 | return max(count, answer) 13 | 14 | 15 | number = input() 16 | cases = list(map(int, input().split())) 17 | 18 | print(solution(cases)) 19 | -------------------------------------------------------------------------------- /1주차/14659/14659_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 14659번 2 | # 한조서열정리하고옴ㅋㅋ 3 | 4 | import sys 5 | readline = sys.stdin.readline 6 | 7 | N = int(readline()) 8 | peaks = list(map(int, readline().split())) 9 | 10 | highest = count = result = 0 11 | 12 | for peak in peaks: 13 | if peak > highest: 14 | highest = peak 15 | count = 0 16 | continue 17 | count += 1 18 | result = max(result, count) 19 | 20 | print(result) 21 | -------------------------------------------------------------------------------- /2주차/11866/11866_python_후디.py: -------------------------------------------------------------------------------- 1 | n, k = map(int, input().split()) 2 | 3 | people = list(range(1, n + 1)) 4 | 5 | sequence = [] 6 | 7 | cursor = k - 1 8 | while len(people) > 1: 9 | sequence.append(people[cursor]) 10 | del people[cursor] 11 | 12 | cursor = cursor + k -1 13 | if cursor >= len(people): 14 | cursor = cursor % len(people) 15 | 16 | sequence.append(people[0]) 17 | print("<" + str.join(", ", map(str, sequence)) + ">") 18 | -------------------------------------------------------------------------------- /1주차/4796/4796_python_이프.py: -------------------------------------------------------------------------------- 1 | 2 | def solution(L, P, V): 3 | if (P > V): 4 | return L 5 | 6 | answer = min(L, V % P) 7 | answer += L * (V // P) 8 | return answer 9 | 10 | prob_count = 0 11 | 12 | while True: 13 | text = input() 14 | if (text == '0 0 0'): 15 | break 16 | 17 | L, P, V = map(int, text.split()) 18 | answer = solution(L, P, V) 19 | 20 | prob_count += 1 21 | print("Case %d: %d" % (prob_count, answer)) 22 | -------------------------------------------------------------------------------- /2주차/11866/11866_python_이프.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | 3 | size, step = map(int, input().split()) 4 | 5 | queue = deque([str(i) for i in range(1, size+1)]) 6 | 7 | answer = [] 8 | 9 | try: 10 | while True: 11 | for i in range(step-1): 12 | queue.append(queue.popleft()) 13 | answer.append(queue.popleft()) 14 | 15 | except IndexError: 16 | pass 17 | 18 | answer = "<" + ", ".join(answer) + ">" 19 | 20 | print(answer) 21 | 22 | -------------------------------------------------------------------------------- /1주차/14659/14659_정.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | int(input()) 6 | mountains = list(map(int, input().split())) 7 | 8 | biggest = 0 9 | cur_streak = 0 10 | max_streak = 0 11 | 12 | for cur in mountains: 13 | if cur >= biggest: 14 | biggest = cur 15 | if cur_streak > max_streak: 16 | max_streak = cur_streak 17 | cur_streak = 0 18 | continue 19 | cur_streak += 1 20 | 21 | print(max(max_streak, cur_streak)) -------------------------------------------------------------------------------- /2주차/23827/23827_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | n = int(sys.stdin.readline()) 4 | lst = list(map(int, sys.stdin.readline().split())) 5 | 6 | reverseLst = lst[::-1] 7 | answerLst = [reverseLst[0]] 8 | for i in range(1, n - 1): 9 | answerLst.append(answerLst[i - 1] + reverseLst[i] % 1_000_000_007) 10 | answerLst = answerLst[::-1] 11 | 12 | answer = 0 13 | for i in range(n-1): 14 | answer += lst[i] * answerLst[i] % 1_000_000_007 15 | 16 | print(answer % 1_000_000_007) 17 | -------------------------------------------------------------------------------- /1주차/10814/10814_python_후디.py: -------------------------------------------------------------------------------- 1 | # 나이순 정렬 2 | # https://www.acmicpc.net/problem/10814 3 | 4 | from collections import defaultdict 5 | 6 | n = int(input()) 7 | 8 | user_age_group = defaultdict(list) 9 | for i in range(n): 10 | user = input().split(" ") 11 | age = int(user[0]) 12 | name = user[1] 13 | 14 | user_age_group[age].append(name) 15 | 16 | for age in sorted(user_age_group.keys()): 17 | for name in user_age_group.get(age): 18 | print(f"{age} {name}") 19 | -------------------------------------------------------------------------------- /3주차/1254/1254_kotlin_페퍼.kt: -------------------------------------------------------------------------------- 1 | fun main() { 2 | val originStr = readln() 3 | val size = originStr.length 4 | 5 | for (i in 0..size) { 6 | val substring = originStr.substring(i, size) 7 | if (substring.isPalindrome()) { 8 | println(size + i) 9 | return 10 | } 11 | } 12 | } 13 | 14 | private fun String.isPalindrome(): Boolean { 15 | if (this == this.reversed()) 16 | return true 17 | return false 18 | } 19 | 20 | -------------------------------------------------------------------------------- /3주차/1254/1254_python_파랑.py: -------------------------------------------------------------------------------- 1 | # 1254 팰린드롬 만들기 2 | 3 | import sys 4 | 5 | 6 | def isPalindrom(s, palindrom): 7 | for i in range(len(palindrom) // 2): 8 | if s[i] != palindrom[len(palindrom) - i - 1]: 9 | return False 10 | return True 11 | 12 | 13 | s = sys.stdin.readline().rstrip() 14 | palindrom = s 15 | for length in range(0, len(s)): 16 | if isPalindrom(s, palindrom): 17 | break 18 | palindrom = s + s[length::-1] 19 | print(len(palindrom)) -------------------------------------------------------------------------------- /1주차/17362/17362_java_포키.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | Scanner scanner = new Scanner(System.in); 7 | int number = scanner.nextInt(); 8 | int finger = number % 8; 9 | if (finger > 5) { 10 | finger = 10 - finger; 11 | } 12 | if (finger == 0) { 13 | finger = 2; 14 | } 15 | System.out.println(finger); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /2주차/12789/12789_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 12789번 2 | # 도키도키 간식드리미 3 | 4 | from collections import deque 5 | import sys 6 | readline = sys.stdin.readline 7 | 8 | N = int(readline()) 9 | students = deque(map(int, readline().rstrip().split())) 10 | waiting = deque() 11 | order = 1 12 | 13 | while students: 14 | waiting.append(students.popleft()) 15 | while waiting and waiting[-1] == order: 16 | waiting.pop() 17 | order += 1 18 | 19 | print("Sad" if waiting else "Nice") 20 | -------------------------------------------------------------------------------- /3주차/13702/13702_python_yaho.py: -------------------------------------------------------------------------------- 1 | # 실패 : 시간초과가 나옵니다.. 근데 다른 풀이가 떠오르지 않아여... 2 | import sys 3 | 4 | readline = sys.stdin.readline 5 | 6 | n, k = map(int, readline().split()) 7 | li = [int(readline()) for _ in range(n)] 8 | 9 | cnt = 0 10 | result = max(li) 11 | 12 | while cnt != k: 13 | share = [li[i] // result for i in range(n)] 14 | cnt = sum(share) 15 | if cnt == k: 16 | break 17 | result = max([li[i] // (share[i] + 1) for i in range(n)]) 18 | 19 | print(result) 20 | -------------------------------------------------------------------------------- /6주차/25391/25391_python_이프.py: -------------------------------------------------------------------------------- 1 | import sys 2 | readLine = sys.stdin.readline 3 | 4 | total, special_awards, main_awards = map(int, readLine().split()) 5 | scores = [list(map(int, readLine().split())) for _ in range(total)] 6 | 7 | scores = sorted(scores, key=lambda x:x[1], reverse=True) 8 | answer = scores[:main_awards] 9 | 10 | scores = sorted(scores[main_awards:], key=lambda x:x[0], reverse=True) 11 | answer.extend(scores[:special_awards]) 12 | 13 | print(sum([a for a,b in answer])) 14 | -------------------------------------------------------------------------------- /1주차/17362/17362_Java_짱구.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | 7 | public static void main(String[] args) throws IOException { 8 | 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | 11 | int[] arr = {2, 1, 2, 3, 4, 5, 4, 3}; 12 | int n = Integer.parseInt(br.readLine()); 13 | 14 | System.out.println(arr[n % 8]); 15 | } 16 | } -------------------------------------------------------------------------------- /3주차/11568/11568_python_정.py: -------------------------------------------------------------------------------- 1 | N = int(input()) 2 | nums = list(map(int, input().split())) 3 | 4 | max_prevs = [0, 999_999_999] 5 | 6 | for idx in range(N): 7 | cur = nums[idx] 8 | max_idx = len(max_prevs) - 1 9 | 10 | if max_prevs[max_idx] < cur: 11 | max_prevs.append(cur) 12 | 13 | for idx in range(max_idx-1, -1, -1): 14 | if max_prevs[idx] < cur and max_prevs[idx + 1] > cur: 15 | max_prevs[idx + 1] = cur 16 | 17 | print(len(max_prevs) - 1) 18 | -------------------------------------------------------------------------------- /3주차/1254/1254_python_후디.py: -------------------------------------------------------------------------------- 1 | text = input() 2 | 3 | for i in range(0, len(text)): 4 | sliced = text[i:] 5 | center_index = len(sliced) // 2 6 | if len(sliced) % 2 > 0: 7 | sliced = sliced[:center_index] + sliced[center_index + 1:] 8 | 9 | center_index = len(sliced) // 2 10 | left = sliced[:center_index] 11 | right = sliced[center_index:] 12 | right_reversed = right[::-1] 13 | 14 | if left == right_reversed: 15 | print(len(text) + i) 16 | break -------------------------------------------------------------------------------- /7주차/24499/24499_python_raccoon.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | k, n = map(int, input().split()) 6 | apple_pies = list(map(int, input().split())) 7 | left = 0 8 | right = n - 1 9 | middle_sum = sum(apple_pies[:n]) 10 | answer = 0 11 | 12 | for i in range(k): 13 | middle_sum -= apple_pies[left] 14 | left = (left + 1) % k 15 | right = (right + 1) % k 16 | middle_sum += apple_pies[right] 17 | answer = max(answer, middle_sum) 18 | 19 | print(answer) 20 | -------------------------------------------------------------------------------- /5주차/6198/6198_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from collections import deque 3 | 4 | input = sys.stdin.readline 5 | 6 | n = int(input()) 7 | lst = [] 8 | for i in range(n): 9 | lst.append(int(input())) 10 | 11 | q = deque([lst[0]]) 12 | answer = 0 13 | for i in range(1, n): 14 | # 1. 현재 지정된 lst[i]보다 작은 값을 q에서 제거 15 | while q: 16 | if q[-1] > lst[i]: 17 | break 18 | q.pop() 19 | # 2. 저장 20 | q.append(lst[i]) 21 | answer += (len(q) - 1) 22 | print(answer) -------------------------------------------------------------------------------- /2주차/12789/12789_python_yaho.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | import sys 3 | 4 | n = int(sys.stdin.readline()) 5 | queue = deque(map(int, sys.stdin.readline().split())) 6 | stack = deque() 7 | next = 1 8 | 9 | while queue: 10 | if queue[0] == next: 11 | queue.popleft() 12 | next += 1 13 | else: 14 | stack.append(queue.popleft()) 15 | while stack and stack[-1] == next: 16 | stack.pop() 17 | next += 1 18 | 19 | print("Nice" if not stack else "Sad") 20 | -------------------------------------------------------------------------------- /1주차/14659/14659_Test.java: -------------------------------------------------------------------------------- 1 | import static org.assertj.core.api.Assertions.assertThat; 2 | import static study.coding.test.backjoon.week_1.Sol_4_14659.solve; 3 | 4 | import org.junit.jupiter.api.Test; 5 | 6 | class Sol_4_14659Test { 7 | 8 | /** 9 | * 7 10 | * 6 4 10 2 5 7 11 11 | */ 12 | @Test 13 | void test1() { 14 | assertThat(solve(7, new int[]{6, 4, 10, 2, 5, 7, 11})).isEqualTo(3); 15 | assertThat(solve(6, new int[]{5, 8, 3, 4, 1, 7})).isEqualTo(4); 16 | } 17 | } -------------------------------------------------------------------------------- /1주차/17362/java_17362_panda.java: -------------------------------------------------------------------------------- 1 | package algorithm_study.week1; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | 7 | public class java_17362_panda { 8 | public static void main(String[] args) throws IOException { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | int number = Integer.parseInt(br.readLine()); 11 | System.out.println(5 - Math.abs(4 - (number - 1) % 8)); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /1주차/14659/14659_python_이프.py: -------------------------------------------------------------------------------- 1 | 2 | size = int(input()) 3 | height_strs = input().split() 4 | 5 | answer = 0 6 | count = 0 7 | 8 | current_height = int(height_strs[0]) 9 | for i in range(1, size): 10 | next_height = int(height_strs[i]) 11 | if (current_height < next_height): 12 | current_height = next_height 13 | 14 | answer = max(answer, count) 15 | count = 0 16 | continue 17 | 18 | count += 1 19 | 20 | answer = max(answer, count) 21 | print(answer) 22 | -------------------------------------------------------------------------------- /3주차/1254/1254_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | word = input().rstrip() 6 | 7 | 8 | def is_palindrome(x): 9 | if x == x[::-1]: 10 | return True 11 | return False 12 | 13 | 14 | cnt = 0 15 | for i in range(len(word)): 16 | if is_palindrome(word[:i:-1]): 17 | cnt = i 18 | break 19 | 20 | while True: 21 | if is_palindrome(word): 22 | print(len(word)) 23 | break 24 | else: 25 | word += word[cnt] 26 | cnt -= 1 27 | -------------------------------------------------------------------------------- /3주차/13702/13702_python_정.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | N, K = map(int, input().split()) 6 | nums = [int(input()) for _ in range(N)] 7 | 8 | start = 1 9 | end = max(nums) 10 | mid = (start + end) // 2 11 | 12 | while start <= end: 13 | total = 0 14 | for num in nums: 15 | total += num // mid 16 | 17 | if total >= K: 18 | start = mid + 1 19 | else: 20 | end = mid - 1 # total < K가 되는 경계선에서 하나 빼기 21 | mid = (start + end) // 2 22 | 23 | print(end) 24 | -------------------------------------------------------------------------------- /3주차/11568/11568_kotlin_페퍼.kt: -------------------------------------------------------------------------------- 1 | import kotlin.math.max 2 | 3 | fun main() { 4 | val N = readln().toInt() 5 | val cards = readln().split(" ").map { it.toInt() } 6 | val length: MutableList = MutableList(N) { 0 } 7 | 8 | for (i in 0 until N) { 9 | length[i] = 1 10 | for (j in 0 until i) { 11 | if (cards[j] < cards[i]) { 12 | length[i] = max(length[i], length[j] + 1) 13 | } 14 | } 15 | } 16 | 17 | println(length.maxOrNull() ?: 1) 18 | } 19 | -------------------------------------------------------------------------------- /7주차/24499/python_2449_yeoleum.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | n,k = map(int,sys.stdin.readline().split()) 4 | pies = list(map(int,sys.stdin.readline().split())) * 2 5 | 6 | left = 0 7 | right = k - 1 8 | sum = 0 9 | 10 | for i in range(k): 11 | sum += pies[i] 12 | 13 | answer = sum 14 | 15 | while(True): 16 | sum -= pies[left] 17 | left = (left + 1) % n 18 | right = (right + 1) % n 19 | sum += pies[right] 20 | 21 | if(left == 0): 22 | break 23 | answer = max(answer, sum) 24 | 25 | print(answer) 26 | -------------------------------------------------------------------------------- /2주차/2121/2121_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 2121번 2 | # 넷이 놀기 3 | 4 | import sys 5 | readline = sys.stdin.readline 6 | 7 | N = int(readline()) 8 | A, B = map(int, readline().rstrip().split()) 9 | 10 | coordinates = set() 11 | 12 | for i in range(N): 13 | x, y = map(int, readline().rstrip().split()) 14 | coordinates.add((x, y)) 15 | 16 | count = 0 17 | 18 | for x, y in coordinates: 19 | if (x + A, y) in coordinates and (x, y + B) in coordinates and (x + A, y + B) in coordinates: 20 | count += 1 21 | 22 | print(count) 23 | -------------------------------------------------------------------------------- /2주차/22941/22941_python_yaho.py: -------------------------------------------------------------------------------- 1 | from math import ceil 2 | import sys 3 | 4 | hpPlayer, atkPlayer, hpMonster, atkMonster = map( 5 | int, sys.stdin.readline().split()) 6 | p, s = map(int, sys.stdin.readline().split()) 7 | 8 | playerDie = ceil(hpPlayer / atkMonster) 9 | if (hpMonster - p) % atkPlayer and (hpMonster - p) % atkPlayer + p <= atkPlayer: 10 | monsterDie = ceil(hpMonster / atkPlayer) 11 | else: 12 | monsterDie = ceil((hpMonster + s) / atkPlayer) 13 | 14 | print("Victory!" if playerDie >= monsterDie else "gg") 15 | -------------------------------------------------------------------------------- /3주차/1254/1254_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | s = sys.stdin.readline()[:-1] 4 | 5 | count = 0 6 | def check(value): 7 | global count 8 | right = len(value) - 1 9 | left = 0 10 | while left <= right: 11 | if value[left] != value[right]: 12 | return False 13 | left += 1 14 | right -= 1 15 | return True 16 | 17 | for i in range(len(s)-1): 18 | checkValue = s+s[:i][::-1] 19 | if check(checkValue): 20 | print(len(checkValue)) 21 | exit(0) 22 | print(len(s)*2-1) -------------------------------------------------------------------------------- /1주차/4796/4796_Test.java: -------------------------------------------------------------------------------- 1 | import org.junit.jupiter.api.DisplayName; 2 | import org.junit.jupiter.api.Test; 3 | 4 | import java.io.IOException; 5 | import java.io.Reader; 6 | import java.io.StringReader; 7 | 8 | class Sol_3_4796Test { 9 | 10 | @Test 11 | void qwe_() throws IOException { 12 | String input = 13 | "5 8 20\n" + 14 | "5 8 17\n" + 15 | "0 0 0"; 16 | Reader reader = new StringReader(input); 17 | Sol_3_4796.solve(reader); 18 | } 19 | 20 | } -------------------------------------------------------------------------------- /1주차/17362/17362_java_렉스.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) throws IOException { 6 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 7 | 8 | int n = Integer.parseInt(br.readLine()); 9 | int r = n % 8; 10 | 11 | if (r == 0) { 12 | r = 2; 13 | } 14 | else if (r > 5) { 15 | r = 10 - r; 16 | } 17 | 18 | System.out.println(r); 19 | br.close(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /2주차/12789/12789_python_파랑.py: -------------------------------------------------------------------------------- 1 | # 12789 도키도키 간식드리미 2 | 3 | import sys 4 | 5 | readline = sys.stdin.readline 6 | 7 | n = int(readline()) 8 | line = list(map(int, readline().split())) 9 | stack = [] 10 | 11 | now = 1 12 | while now <= n: 13 | if line and line[0] == now: 14 | line.pop(0) 15 | now += 1 16 | elif stack and stack[-1] == now: 17 | stack.pop() 18 | now += 1 19 | else: 20 | if not line: 21 | print("Sad") 22 | exit(0) 23 | stack.append(line.pop(0)) 24 | 25 | print("Nice") 26 | -------------------------------------------------------------------------------- /1주차/14659/14659_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | n = int(input()) 6 | mountains = list(map(int, input().split())) 7 | 8 | lower_mountain_count = 0 9 | current_position = 0 10 | latest_max_score = 0 11 | 12 | for m in mountains: 13 | if current_position <= m: 14 | current_position = m 15 | latest_max_score = max(latest_max_score, lower_mountain_count) 16 | lower_mountain_count = 0 17 | else: 18 | lower_mountain_count += 1 19 | 20 | print(max(latest_max_score, lower_mountain_count)) 21 | 22 | 23 | -------------------------------------------------------------------------------- /2주차/22941/22941_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from math import ceil 3 | 4 | input = sys.stdin.readline 5 | 6 | me_hp, me_atk, you_hp, you_atk = map(int, input().split()) 7 | p, s = map(int, input().split()) 8 | 9 | my_death_turn = ceil(me_hp / you_atk) 10 | 11 | just_before_skill_hp = (you_hp - p) % me_atk + p 12 | if p < just_before_skill_hp <= me_atk: 13 | your_death_turn = ceil(you_hp / me_atk) 14 | else: 15 | your_death_turn = ceil((you_hp + s) / me_atk) 16 | 17 | if my_death_turn >= your_death_turn: 18 | print("Victory!") 19 | else: 20 | print("gg") 21 | -------------------------------------------------------------------------------- /1주차/14659/kotlin_14659_페퍼.kt: -------------------------------------------------------------------------------- 1 | import kotlin.math.max 2 | 3 | fun main() { 4 | val n = readln().toInt() 5 | val archers = readln().split(" ").map { it.toInt() } 6 | var maxCount = 0 7 | 8 | var idx = 1 9 | var archer = archers[0] 10 | var cnt = 0 11 | while (idx < n) { 12 | if (archer > archers[idx]) { 13 | cnt++ 14 | } else { 15 | maxCount = max(cnt, maxCount) 16 | cnt = 0 17 | archer = archers[idx] 18 | } 19 | idx++ 20 | } 21 | println(max(maxCount, cnt)) 22 | } 23 | -------------------------------------------------------------------------------- /3주차/13702/13702_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | n, k = map(int, sys.stdin.readline().split(" ")) 4 | lst = [int(sys.stdin.readline()) for _ in range(n)] 5 | 6 | left = 0 7 | right = sum(lst)//k 8 | middle = 0 9 | # 최대 막걸리 양에서 이분탐색 10 | while left <= right: 11 | count = 0 12 | # 몇명이 마실 수 있는지 검증 13 | middle = (left+right) // 2 14 | # 예외 15 | if middle == 0: 16 | middle += 1 17 | for j in lst: 18 | count += j//middle 19 | if k <= count: 20 | left = middle + 1 21 | continue 22 | right = middle -1 23 | print(right) 24 | -------------------------------------------------------------------------------- /4주차/16198/16198_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | 6 | def find(sum): 7 | global max_sum 8 | if len(seq) == 2: 9 | if sum > max_sum: 10 | max_sum = sum 11 | return 12 | else: 13 | for i in range(1, len(seq) - 1): 14 | tmp_energy = seq[i - 1] * seq[i + 1] 15 | tmp = seq.pop(i) 16 | find(sum + tmp_energy) 17 | seq.insert(i, tmp) 18 | 19 | 20 | n = int(input()) 21 | seq = list(map(int, input().split())) 22 | max_sum = 0 23 | find(0) 24 | print(max_sum) 25 | -------------------------------------------------------------------------------- /2주차/2121/Python_2121_토닉.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | N = int(input()) 6 | A, B = map(int, input().rstrip().split()) 7 | li = set() 8 | for _ in range(N): 9 | li.add(tuple(map(int, input().rstrip().split()))) 10 | 11 | def check(li, i): 12 | x, y = i 13 | if (x + A, y) not in li: 14 | return False 15 | if (x, y + B) not in li: 16 | return False 17 | if (x + A, y + B) not in li: 18 | return False 19 | return True 20 | 21 | result = 0 22 | for i in li: 23 | result += check(li, i) 24 | 25 | print(result) 26 | -------------------------------------------------------------------------------- /7주차/24499/24499_python_이프.py: -------------------------------------------------------------------------------- 1 | import sys 2 | input = sys.stdin.readline 3 | 4 | 5 | def solution(): 6 | size, count = map(int, input().split()) 7 | numbers = list(map(int, input().split())) 8 | 9 | if size == count: 10 | return sum(numbers) 11 | 12 | total = sum(numbers[size - count:]) 13 | answer = total 14 | 15 | for i in range(size - 1, -2, -1): 16 | left, right = numbers[i - count], numbers[i] 17 | total = total + left - right 18 | answer = max(answer, total) 19 | 20 | return answer 21 | 22 | 23 | print(solution()) 24 | -------------------------------------------------------------------------------- /1주차/17362/josh_java_17362.java: -------------------------------------------------------------------------------- 1 | import java.util.Arrays; 2 | import java.util.List; 3 | import java.util.Scanner; 4 | 5 | public class josh_java_17362 { 6 | public static int solve(int count) { 7 | List bucket = Arrays.asList(2, 1, 2, 3, 4, 5, 4, 3); 8 | int index = count % 8; 9 | return bucket.get(index); 10 | } 11 | 12 | public static void main(String[] args) { 13 | Scanner sc = new Scanner(System.in); 14 | int count = sc.nextInt(); 15 | int answer = solve(count); 16 | System.out.println(answer); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /2주차/12789/12789_python_leo.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | 6 | def solution(N, number_tickets): 7 | goal_number = 1 8 | stack = [N + 1] 9 | for i in number_tickets: 10 | while goal_number == stack[-1]: 11 | stack.pop() 12 | goal_number += 1 13 | if i == goal_number: 14 | goal_number += 1 15 | elif i < stack[-1]: 16 | stack.append(i) 17 | else: 18 | return "Sad" 19 | return "Nice" 20 | 21 | 22 | print(solution(int(input()), list(map(int, input().split())))) 23 | -------------------------------------------------------------------------------- /3주차/13702/13702_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | n, k = map(int, input().split()) 6 | jars = list(int(input()) for _ in range(n)) 7 | 8 | 9 | def count_glass(amount, total): 10 | cnt = 0 11 | for x in total: 12 | cnt += x // amount 13 | return cnt 14 | 15 | 16 | lt, rt = 1, max(jars) 17 | res = 0 18 | 19 | while lt <= rt: 20 | mid = (lt + rt) // 2 21 | glass = count_glass(mid, jars) 22 | 23 | if glass >= k: 24 | res = mid 25 | lt = mid + 1 26 | else: 27 | rt = mid - 1 28 | 29 | print(res) 30 | -------------------------------------------------------------------------------- /4주차/16198/16198_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 16198번 2 | # 에너지 모으기 3 | 4 | import sys 5 | 6 | readline = sys.stdin.readline 7 | 8 | N = int(readline()) 9 | W = list(map(int, readline().rstrip().split())) 10 | 11 | 12 | def dfs(energies): 13 | if len(energies) == 3: 14 | return energies[0] * energies[2] 15 | answer = 0 16 | for i in range(1, len(energies) - 1): 17 | product = energies[i - 1] * energies[i + 1] 18 | total = product + dfs(energies[:i] + energies[i + 1:]) 19 | answer = max(answer, total) 20 | return answer 21 | 22 | 23 | print(dfs(W)) 24 | -------------------------------------------------------------------------------- /3주차/1254/1254_python_토르.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | import sys 3 | 4 | # 가장 긴 팰린드롬을 구하자. 주어진 문자열 길이에서 가장 긴 팰린드롬 길이를 빼면된다. 5 | # 만약 주어진 문자열이 팰린드롬이라면 0을 반환하면 된다 6 | 7 | string = input() 8 | min_length = sys.maxsize 9 | 10 | if string == string[::-1]: 11 | print(len(string)) 12 | exit() 13 | 14 | 15 | for i in range(len(string)): 16 | for j in range(i, len(string)): 17 | if string[i:j+1] == string[i:j+1][::-1]: 18 | if not string[j+1:]: 19 | min_length = min(min_length, len(string) - len(string[i:j+1]) + len(string)) 20 | 21 | print(min_length) -------------------------------------------------------------------------------- /1주차/4796/kotlin_4796_페퍼.kt: -------------------------------------------------------------------------------- 1 | fun main() { 2 | var case = 1 3 | while (true) { 4 | val inputs = readln().split(" ") 5 | val L = inputs[0].toInt() 6 | val P = inputs[1].toInt() 7 | val V = inputs[2].toInt() 8 | 9 | if (L == 0) 10 | break 11 | 12 | val remainder = V % P 13 | val quotient = V / P 14 | 15 | if (remainder >= L) { 16 | println("Case $case: ${(quotient + 1) * L}") 17 | } else { 18 | println("Case $case: ${quotient * L + remainder}") 19 | } 20 | case++ 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /1주차/17362/java_17362_유콩.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.ArrayList; 5 | import java.util.List; 6 | 7 | public class Main { 8 | public static void main(String[] args) throws IOException { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | 11 | int count = Integer.parseInt(br.readLine()); 12 | List fingers = new ArrayList<>(List.of(1, 2, 3, 4, 5, 4, 3, 2)); 13 | 14 | System.out.println(fingers.get((count - 1) % (fingers.size()))); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /7주차/16288/16288_python_raccoon.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from collections import deque 3 | 4 | input = sys.stdin.readline 5 | 6 | n, k = map(int, input().split()) 7 | sequence = list(map(int, input().split())) 8 | waitings = [deque() for _ in range(k)] 9 | current_person = 1 10 | 11 | for seq in sequence: 12 | for waiting in waitings: 13 | if not waiting: 14 | waiting.append(seq) 15 | break 16 | if waiting and waiting[-1] < seq: 17 | waiting.append(seq) 18 | break 19 | else: 20 | print("NO") 21 | sys.exit(0) 22 | 23 | print("YES") 24 | -------------------------------------------------------------------------------- /2주차/11866/11866_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | n, k = map(int, sys.stdin.readline().split()) 4 | lst = list(range(1, n + 1)) 5 | visited = [False] * (n + 1) 6 | current = k - 1 7 | count = 0 8 | answer = [lst[current]] 9 | visited[current] = True 10 | 11 | while len(answer) != n: 12 | current += 1 13 | if current >= n: 14 | current = n - current 15 | if not visited[current]: 16 | count += 1 17 | if count == k: 18 | answer.append(lst[current]) 19 | visited[current] = True 20 | count = 0 21 | print("<", end="") 22 | print(*answer, sep=", ", end="") 23 | print(">") 24 | -------------------------------------------------------------------------------- /2주차/12789/12789_정.py: -------------------------------------------------------------------------------- 1 | N = int(input()) 2 | numbers = list(map(int, input().split())) 3 | 4 | last_passed = 0 5 | stack = [] 6 | can_eat = True 7 | 8 | while len(numbers) > 0 or len(stack) > 0: 9 | if stack and stack[-1] == last_passed + 1: 10 | last_passed = stack.pop() 11 | continue 12 | if numbers: 13 | cur = numbers.pop(0) 14 | if cur == last_passed + 1: 15 | last_passed = cur 16 | else: 17 | stack.append(cur) 18 | continue 19 | can_eat = False 20 | break 21 | 22 | if can_eat: 23 | print("Nice") 24 | else: 25 | print("Sad") 26 | -------------------------------------------------------------------------------- /1주차/10814/10814_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 10814번 2 | # 나이순 정렬 3 | 4 | import sys 5 | readline = sys.stdin.readline 6 | 7 | # 1st attempt 8 | users = [] 9 | 10 | for i in range(int(readline())): 11 | users.append(readline().rstrip().split()) 12 | 13 | for user in sorted(users, key=lambda x: int(x[0])): 14 | print(f'{user[0]} {user[1]}') 15 | 16 | # 2nd attempt 17 | users = [[] for i in range(201)] 18 | 19 | for i in range(int(readline())): 20 | age, name = readline().rstrip().split() 21 | users[int(age)].append(name) 22 | 23 | for i in range(201): 24 | for name in users[i]: 25 | print(f'{i} {name}') 26 | -------------------------------------------------------------------------------- /3주차/1254/1254_java_라라.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | 3 | public class Main { 4 | public static void main(String[] args) { 5 | Scanner sc = new Scanner(System.in); 6 | String input = sc.nextLine(); 7 | 8 | int pLength = 0; 9 | for (int i = 0; i < input.length(); i++) { 10 | StringBuilder s = new StringBuilder(input.substring(i)); 11 | if (s.toString().equals(s.reverse().toString())) { 12 | pLength = Math.max(s.length(), pLength); 13 | } 14 | } 15 | System.out.println(input.length() + input.length() - pLength); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /1주차/17362/Kun_17362.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.StringTokenizer; 5 | 6 | public class Kun_17362 { 7 | public static void main(String[] args) throws IOException { 8 | 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | StringTokenizer st = new StringTokenizer(br.readLine()); 11 | int value = Integer.parseInt(st.nextToken()); 12 | 13 | int[] ar = {2, 1, 2, 3, 4, 5, 4, 3}; 14 | 15 | int aIndex = value % 8; 16 | System.out.println(ar[aIndex]); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /2주차/22941/22941_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 22941번 2 | # RPG 마스터 오명진 3 | 4 | import math 5 | import sys 6 | readline = sys.stdin.readline 7 | 8 | heroHP, heroATK, demonKingHP, demonKingATK = map(int, readline().rstrip().split()) 9 | P, S = map(int, readline().rstrip().split()) 10 | 11 | heroResistance = math.ceil(heroHP / demonKingATK) 12 | 13 | if heroATK >= (demonKingHP - P) % heroATK + P and (demonKingHP - P) % heroATK: 14 | demonKingResistance = math.ceil(demonKingHP / heroATK) 15 | else: 16 | demonKingResistance = math.ceil((demonKingHP + S) / heroATK) 17 | 18 | print("Victory!" if heroResistance >= demonKingResistance else "gg") 19 | -------------------------------------------------------------------------------- /4주차/16198/16198_python_이프.py: -------------------------------------------------------------------------------- 1 | import sys, copy 2 | 3 | readLine = sys.stdin.readline 4 | 5 | 6 | def solution(size, balls): 7 | if size == 2: 8 | return 0 9 | 10 | answer = 0 11 | for i in range(1, size - 1): 12 | other = copy.deepcopy(balls) 13 | other.pop(i) 14 | 15 | result = balls[i - 1] * balls[i + 1] + solution(size - 1, other) 16 | if answer <= result: 17 | answer = result 18 | return answer 19 | 20 | 21 | if __name__ == "__main__": 22 | size = int(readLine()) 23 | balls = list(map(int, readLine().split())) 24 | 25 | print(solution(size, balls)) 26 | -------------------------------------------------------------------------------- /1주차/17362/17362_java_아키.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | public static void main(String[] args) throws IOException { 7 | //입력 8 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | int n = Integer.parseInt(br.readLine()); 10 | 11 | //알고리즘 12 | n -= 1; 13 | int remain = n % 8; 14 | if (remain < 5) { 15 | System.out.println(remain + 1); 16 | } else { 17 | System.out.println(8 - remain + 1); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /2주차/22941/22941_정.py: -------------------------------------------------------------------------------- 1 | hero_hp, hero_atk, enemy_hp, enemy_atk = map(int, input().split()) 2 | low_hp, heal = map(int, input().split()) 3 | 4 | hero_max_turn = (hero_hp - 1) // enemy_atk 5 | 6 | enemy_max_healthy_turn = (enemy_hp - low_hp - 1) // hero_atk 7 | enemy_inital_danger_hp = enemy_hp - ((enemy_max_healthy_turn + 1) * hero_atk) 8 | 9 | enemy_max_turn = enemy_max_healthy_turn 10 | if enemy_inital_danger_hp > 0: 11 | max_heal = min(heal, enemy_hp - enemy_inital_danger_hp) 12 | enemy_max_turn = (enemy_hp + heal - 1) // hero_atk 13 | 14 | if hero_max_turn >= enemy_max_turn: 15 | print("Victory!") 16 | else: 17 | print("gg") 18 | -------------------------------------------------------------------------------- /5주차/20922/20922_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from collections import defaultdict, deque 3 | input = sys.stdin.readline 4 | 5 | n, k = map(int, input().split()) 6 | lst = list(map(int, input().split())) 7 | 8 | db = defaultdict(int) 9 | q = deque() 10 | dp = [0] * (n+1) 11 | answer = 0 12 | for index, value in enumerate(lst): 13 | q.append(value) 14 | db[value] += 1 15 | if (k+1) == db[value]: 16 | # 현재 위치가 마지막인 최장 연속 부분 수열로 맞춘다 17 | while True: 18 | pop = q.popleft() 19 | db[pop] -= 1 20 | if pop == value: 21 | break 22 | dp[index] = len(q) 23 | print(max(dp)) 24 | -------------------------------------------------------------------------------- /5주차/5107/5107_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from collections import defaultdict 3 | input = sys.stdin.readline 4 | 5 | index = 1 6 | while True: 7 | n = int(input()) 8 | # 종료 설정 9 | if n == 0: 10 | exit(0) 11 | print(index, end=' ') 12 | index += 1 13 | lst = defaultdict(bool) 14 | 15 | # 로직시작 16 | count = 0 17 | # n개 입력받기 18 | for _ in range(n): 19 | a, b = map(str, input().split()) 20 | # 둘다 True면 count 증가 21 | if lst[a] == True and lst[b] == True: 22 | count += 1 23 | else: 24 | lst[a] = True 25 | lst[b] = True 26 | print(count) -------------------------------------------------------------------------------- /3주차/17123/17123_python_yaho.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | readline = sys.stdin.readline 4 | 5 | t = int(readline()) 6 | 7 | for _ in range(t): 8 | n, m = map(int, readline().split()) 9 | li = [list(map(int, readline().split())) for _ in range(n)] 10 | li_r = [sum(r) for r in li] 11 | li_c = [sum(c) for c in list(zip(*li))] 12 | 13 | for _ in range(m): 14 | r1, c1, r2, c2, v = map(int, readline().split()) 15 | for r in range(r1 - 1, r2): 16 | li_r[r] += (c2 - c1 + 1) * v 17 | for c in range(c1 - 1, c2): 18 | li_c[c] += (r2 - r1 + 1) * v 19 | 20 | print(*li_c) 21 | print(*li_r) 22 | -------------------------------------------------------------------------------- /4주차/16198/16198_python_토닉.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | N = int(input()) 6 | 7 | weights = list(map(int, input().rstrip().split())) 8 | 9 | def calculate_energe(weights, total_energy): 10 | if len(weights) <= 2: 11 | return total_energy 12 | total_energys = [] 13 | for i in range(1, len(weights)-1): 14 | temp_weight = weights[:] 15 | add_energy = temp_weight[i-1] * temp_weight[i+1] 16 | temp_weight.pop(i) 17 | total_energys.append(calculate_energe(temp_weight, total_energy + add_energy)) 18 | return max(total_energys) 19 | 20 | print(calculate_energe(weights, 0)) 21 | -------------------------------------------------------------------------------- /4주차/16198/16198_python_토르.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | import sys 3 | import copy 4 | 5 | N = int(input()) 6 | max_sum = -sys.maxsize 7 | balls = list(map(int, input().split())) 8 | 9 | 10 | def back_tracking(balls, current_sum): 11 | global max_sum 12 | if len(balls) == 2: 13 | max_sum = max(max_sum, current_sum) 14 | return 15 | 16 | for i in range(1, len(balls) - 1): 17 | copy_balls = copy.copy(balls) 18 | tmp_add = copy_balls[i - 1] * copy_balls[i + 1] 19 | copy_balls.pop(i) 20 | back_tracking(copy_balls, current_sum + tmp_add) 21 | 22 | back_tracking(balls, 0) 23 | print(max_sum) 24 | -------------------------------------------------------------------------------- /6주차/24393/24393_python_이프.py: -------------------------------------------------------------------------------- 1 | import sys 2 | readLine = sys.stdin.readline 3 | 4 | def solution(): 5 | size = int(readLine()) 6 | 7 | position = 1 8 | for _ in range(size): 9 | start = 1 10 | if position > 13: 11 | start = 0 12 | position -= 13 13 | 14 | sequences = list(map(int, readLine().split())) 15 | for i in range(start, len(sequences), 2): 16 | seq = sequences[i] 17 | if position <= seq: 18 | break 19 | position -= seq 20 | position = sum(sequences[:i]) + position 21 | return position 22 | 23 | 24 | print(solution()) 25 | -------------------------------------------------------------------------------- /1주차/17362/Java_17362_Yeoleum.java: -------------------------------------------------------------------------------- 1 | import java.io.*; 2 | import java.util.Arrays; 3 | import java.util.StringTokenizer; 4 | 5 | public class Main { 6 | 7 | static BufferedReader r = new BufferedReader(new InputStreamReader(System.in)); 8 | static BufferedWriter w = new BufferedWriter(new OutputStreamWriter(System.out)); 9 | 10 | public static void main(String[] args) throws IOException { 11 | final StringTokenizer st = new StringTokenizer(r.readLine()); 12 | final int n = Integer.parseInt(st.nextToken()); 13 | Integer[] values = {2, 1, 2, 3, 4, 5, 4, 3}; 14 | 15 | System.out.println(values[n % 8]); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /2주차/12789/12789_python_토르.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | 3 | N = int(input()) 4 | students = list(map(int, input().split())) 5 | 6 | waiting_stack = [] 7 | done = [] 8 | answer = [i for i in range(1, N+1)] 9 | 10 | for i in range(len(students)): 11 | while waiting_stack and waiting_stack[-1] == len(done) + 1: 12 | done.append(waiting_stack.pop()) 13 | if students[i] == len(done) + 1: 14 | done.append(students[i]) 15 | else: 16 | waiting_stack.append(students[i]) 17 | 18 | while waiting_stack: 19 | done.append(waiting_stack.pop()) 20 | 21 | if answer == done: 22 | print("Nice") 23 | else: 24 | print("Sad") 25 | -------------------------------------------------------------------------------- /3주차/13702/13702_python_이프.py: -------------------------------------------------------------------------------- 1 | import sys 2 | input = sys.stdin.readline 3 | 4 | def search(cups, target): 5 | start = 1 6 | end = max(cups) 7 | 8 | result = 0 9 | while (start <= end): 10 | mid = (start + end) // 2 11 | 12 | count = sum([cup // mid for cup in cups]) 13 | if (count >= target): 14 | result = mid 15 | start = mid + 1 16 | else: 17 | end = mid -1 18 | 19 | return result 20 | 21 | 22 | def solution(): 23 | size, target = map(int, input().split()) 24 | cups = [int(input()) for i in range(size)] 25 | return search(cups, target) 26 | 27 | print(solution()) 28 | -------------------------------------------------------------------------------- /3주차/17123/17123_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | t = int(input()) 6 | 7 | for _ in range(t): 8 | n, m = map(int, input().split()) 9 | board = [list(map(int, input().split())) for _ in range(n)] 10 | 11 | row_sum = [sum(row) for row in board] 12 | col_sum = [sum(col) for col in list(zip(*board))] 13 | 14 | for _ in range(m): 15 | r1, c1, r2, c2, v = map(int, input().split()) 16 | for i in range(r1 - 1, r2): 17 | row_sum[i] += (c2 - c1 + 1) * v 18 | for i in range(c1 - 1, c2): 19 | col_sum[i] += (r2 - r1 + 1) * v 20 | 21 | print(*row_sum) 22 | print(*col_sum) 23 | -------------------------------------------------------------------------------- /1주차/4796/4796_java_매트.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | Scanner scanner = new Scanner(System.in); 7 | 8 | int count = 1; 9 | while (true) { 10 | int l = scanner.nextInt(); 11 | int p = scanner.nextInt(); 12 | int v = scanner.nextInt(); 13 | 14 | if (l == 0 && p == 0 && v == 0) { 15 | return; 16 | } 17 | 18 | int max = ((v / p) * l) + Math.min(v % p, l); 19 | System.out.println("Case " + count + ": " + max); 20 | count++; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /1주차/17362/17362_java_슬로.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | 3 | public class Main17362 { 4 | 5 | public static void main(String[] args) { 6 | Scanner sc = new Scanner(System.in); 7 | int n = sc.nextInt(); 8 | System.out.println(calculate(n % 8)); 9 | } 10 | 11 | private static int calculate(int n) { 12 | if (n == 1) { 13 | return 1; 14 | } 15 | if (n == 0 || n == 2) { 16 | return 2; 17 | } 18 | if (n == 3 || n == 7) { 19 | return 3; 20 | } 21 | if (n == 4 || n == 6) { 22 | return 4; 23 | } 24 | return 5; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /6주차/24393/24393_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from collections import deque 3 | 4 | input = sys.stdin.readline 5 | 6 | n = int(input()) 7 | cards = [1] + [0] * 26 8 | left = cards[:13] 9 | right = cards[13:] 10 | 11 | for _ in range(n): 12 | seq = list(map(int, input().split())) 13 | left = cards[:13] 14 | right = cards[13:] 15 | new_cards = [] 16 | for i in range(len(seq)): 17 | if i % 2 == 0: 18 | new_cards.extend(right[:seq[i]]) 19 | right = right[seq[i]:] 20 | else: 21 | new_cards.extend(left[:seq[i]]) 22 | left = left[seq[i]:] 23 | cards = new_cards 24 | 25 | print(cards.index(1) + 1) 26 | -------------------------------------------------------------------------------- /2주차/12789/12789_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | n = int(input()) 6 | seq = list(map(int, input().split()))[::-1] 7 | add_seq = list() 8 | last_number = 0 9 | 10 | while True: 11 | if not seq: 12 | break 13 | 14 | if last_number + 1 == seq[-1]: 15 | last_number = seq.pop() 16 | continue 17 | 18 | while add_seq and add_seq[-1] == last_number + 1: 19 | last_number = add_seq.pop() 20 | 21 | add_seq.append(seq.pop()) 22 | 23 | while add_seq and add_seq[-1] == last_number + 1: 24 | last_number = add_seq.pop() 25 | 26 | if last_number == n: 27 | print("Nice") 28 | else: 29 | print("Sad") 30 | 31 | -------------------------------------------------------------------------------- /1주차/4796/4796_java_포키.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | Scanner scanner = new Scanner(System.in); 7 | int line = 0; 8 | while (true) { 9 | line++; 10 | int l = scanner.nextInt(); 11 | int p = scanner.nextInt(); 12 | int v = scanner.nextInt(); 13 | if ((l + p + v) == 0) { 14 | break; 15 | } 16 | 17 | int dayCount = (v / p * l) + Integer.min(l, v % p); 18 | System.out.printf("Case %d: %d%n", line, dayCount); 19 | scanner.nextLine(); 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /3주차/13702/13702_python_토르.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | import sys 3 | 4 | # 주전자의 개수 N, 친구들의 수 K 5 | N, K = map(int, input().split()) 6 | drinks = [int(input()) for _ in range(N)] 7 | 8 | left, right = 0, sys.maxsize 9 | answer = 0 10 | 11 | 12 | def calc_drink(mid): 13 | people_count = 0 14 | for drink in drinks: 15 | people_count += (drink // mid) 16 | return people_count 17 | 18 | while left <= right: 19 | mid = (left + right) // 2 20 | dividable_people_count = calc_drink(mid) 21 | 22 | if dividable_people_count < K: 23 | right = mid - 1 24 | else: 25 | answer = max(answer, mid) 26 | left = mid + 1 27 | 28 | print(answer) -------------------------------------------------------------------------------- /4주차/16198/16198_python_정.py: -------------------------------------------------------------------------------- 1 | input() 2 | nums = list(map(int, input().split())) 3 | 4 | def dfs(arr, total_sum): 5 | global max_sum 6 | 7 | size = len(arr) 8 | if size == 2: 9 | if max_sum < total_sum: 10 | max_sum = total_sum 11 | return 12 | 13 | for cur_idx in range(1, size-1): 14 | left = cur_idx - 1 15 | right = cur_idx + 1 16 | total_sum += arr[left] * arr[right] 17 | mid = arr.pop(cur_idx) 18 | 19 | dfs(list(arr), total_sum) 20 | 21 | arr.insert(cur_idx, mid) 22 | total_sum -= arr[left] * arr[right] 23 | 24 | max_sum = 0 25 | 26 | dfs(nums, 0) 27 | 28 | print(max_sum) 29 | -------------------------------------------------------------------------------- /1주차/10814/10814_python_이프.py: -------------------------------------------------------------------------------- 1 | ## 첫번째 풀이 2 | registers = [] 3 | 4 | for _ in range(int(input())): 5 | age, name = input().split() 6 | registers.append([int(age), name]) 7 | 8 | for age, name in sorted(registers, key=lambda x:x[0]): 9 | print(age, name) 10 | 11 | 12 | ############################# 13 | ## 두번째 풀이 (첫번째 풀이에 비해 더 적은 시간복잡도) 14 | people = [[] for i in range(201)] 15 | 16 | for _ in range(int(input())): 17 | age,name = input().split() 18 | age = int(age) 19 | 20 | people[age].append(name) 21 | 22 | for age in range(1, 201): 23 | names = people[age] 24 | if (len(names) == 0): 25 | continue 26 | for name in names: 27 | print(age,name) 28 | -------------------------------------------------------------------------------- /3주차/1254/1254_java_루나.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | public static void main(String[] args) throws IOException { 7 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 8 | 9 | String S = br.readLine(); 10 | int length = S.length(); 11 | int answer = 0; 12 | 13 | for (int i = 0; i < length; i++) { 14 | String substr = S.substring(i); 15 | StringBuilder reverse = new StringBuilder(substr).reverse(); 16 | if(substr.equals(reverse.toString())){ 17 | break; 18 | } 19 | answer ++ ; 20 | } 21 | 22 | System.out.println(length + answer); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /7주차/16288/16228_python_토르.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | import sys 3 | import copy 4 | from collections import defaultdict 5 | import heapq 6 | 7 | n, k = map(int, input().split()) 8 | customers = list(map(int, input().split())) 9 | waiting_queues = [deque() for _ in range(k)] 10 | 11 | for customer in customers: 12 | for waiting_queue in waiting_queues: 13 | if not waiting_queue: 14 | waiting_queue.append(customer) 15 | break 16 | # 어떤 큐에 들어가든 오름차순이 유지되면 된다 17 | elif waiting_queue[-1] < customer: 18 | waiting_queue.append(customer) 19 | break 20 | else: 21 | print("NO") 22 | sys.exit(0) 23 | 24 | print("YES") -------------------------------------------------------------------------------- /1주차/17362/17362_java_윤주리.java: -------------------------------------------------------------------------------- 1 | package PS; 2 | 3 | import java.util.Scanner; 4 | 5 | public class Math2 { 6 | 7 | public static void main(String[] args) { 8 | Scanner scanner = new Scanner(System.in); 9 | int n = scanner.nextInt(); 10 | 11 | if (n <= 5) { 12 | System.out.println(n); 13 | } else { 14 | int number = n - 5; 15 | if (((number - 1) / 4) % 2 == 0) {//오른쪽에서 왼쪽으로 증가하는 경우 16 | System.out.println((number % 4 == 0) ? 1 : 5 - number % 4); 17 | } else {// 왼쪽에서 오른쪽으로 증가하는 경우 18 | System.out.println((number % 4 == 0) ? 5 : number % 4 + 1); 19 | } 20 | } 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /1주차/10814/10814_java_포키.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | import java.util.Comparator; 3 | import java.util.List; 4 | import java.util.Scanner; 5 | 6 | public class Main { 7 | 8 | public static void main(String[] args) { 9 | Scanner scanner = new Scanner(System.in); 10 | int count = scanner.nextInt(); 11 | scanner.nextLine(); 12 | List inputs = new ArrayList<>(); 13 | for (int i = 0; i < count; i++) { 14 | inputs.add(scanner.nextLine()); 15 | } 16 | inputs.stream() 17 | .sorted(Comparator.comparingInt(input -> Integer.parseInt(input.split(" ")[0]))) 18 | .forEach(System.out::println); 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /1주차/17362/17362_cpp_케이.cpp: -------------------------------------------------------------------------------- 1 | // 220629 #17362 수학은 체육과목입니다 2 2 | // math 3 | #include 4 | #define sz(v) (int)v.size() 5 | #define all(v) (v).begin(), (v).end() 6 | #define press(v) (v).erase(unique(all(v)), (v).end()) 7 | using namespace std; 8 | typedef long long ll; 9 | typedef pair pi; 10 | typedef pair pii; 11 | typedef pair pl; 12 | const int MAX = 53; 13 | const int INF = 0x3f3f3f3f; 14 | const ll LNF = 0x3f3f3f3f3f3f3f3f; 15 | const int MOD = 1e9 + 7; 16 | int N; 17 | int main() { 18 | cin.tie(0)->sync_with_stdio(0); 19 | cin>>N; 20 | // 주기가 8이다. 21 | N%=8; 22 | // case_work 23 | if(!N)cout<<2; 24 | else if(N<=5)cout<) { 15 | if (marbles.size == 2) { 16 | maxEnergy = max(maxEnergy, energy) 17 | } else { 18 | for (idx in 1 until marbles.size - 1) { 19 | val removedMarble = marbles.removeAt(idx) 20 | collectEnergy(energy + (marbles[idx - 1] * marbles[idx]), marbles) 21 | marbles.add(idx, removedMarble) 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /3주차/11568/11568_python_제로.py: -------------------------------------------------------------------------------- 1 | import copy 2 | import sys 3 | from collections import defaultdict 4 | from bisect import bisect_left 5 | 6 | n = int(sys.stdin.readline()) 7 | lst = list(map(int, sys.stdin.readline().split(" "))) 8 | sortedLst = copy.deepcopy(lst) 9 | sortedLst.sort() 10 | dicts = defaultdict(int) 11 | 12 | # 입력값으로 초기화 13 | for i in sortedLst: 14 | dicts[i] = 0 15 | 16 | for i in lst: 17 | # 앞에서부터 현재값 이전까지 값 구하기 18 | keys = list(dicts.keys()) 19 | findValues = list(dicts.values())[0:bisect_left(keys, i)] 20 | # 기존 없다면 기본값 21 | if (len(findValues)) == 0: 22 | dicts[i] = 1 23 | continue 24 | # 이전치의 최고보다 1 더한다 25 | dicts[i] = max(findValues) + 1 26 | print(max(dicts.values())) 27 | -------------------------------------------------------------------------------- /6주차/24229/24229_python_파랑.py: -------------------------------------------------------------------------------- 1 | # 24229 모두싸인 출근길 2 | 3 | import sys 4 | 5 | readline = sys.stdin.readline 6 | 7 | n = int(readline()) 8 | values = [tuple(map(int, readline().split())) for _ in range(n)] 9 | values.sort() 10 | 11 | # 판자 합치기 12 | boards = [] 13 | left = 0 14 | right = values[0][1] 15 | for l, r in values: 16 | if l <= right: 17 | right = max(right, r) 18 | else: 19 | boards.append((left, right)) 20 | left = l 21 | right = r 22 | boards.append((left, right)) 23 | 24 | # 최대 이동 지점 구하기 25 | max_r = 0 26 | res = 0 27 | for l, r in boards: 28 | if l <= max_r: 29 | res = max(res, r) 30 | max_r = max(max_r, r * 2 - l) 31 | else: 32 | break 33 | 34 | print(res) 35 | -------------------------------------------------------------------------------- /1주차/14659/14659_python_후디.py: -------------------------------------------------------------------------------- 1 | # 한조서열정리하고옴ㅋㅋ 2 | # https://www.acmicpc.net/problem/14659 3 | 4 | n = int(input()) 5 | attackers = list(map(int, input().split(" "))) 6 | 7 | max_kill_count = 0 8 | 9 | attacker_index = 0 10 | target_index = 1 11 | kill_count = 0 12 | 13 | while True: 14 | if target_index > n - 1: 15 | break 16 | 17 | attacker = attackers[attacker_index] 18 | target = attackers[target_index] 19 | 20 | if attacker >= target: 21 | kill_count += 1 22 | target_index += 1 23 | else: 24 | kill_count = 0 25 | attacker_index = target_index 26 | target_index = attacker_index + 1 27 | 28 | max_kill_count = max(max_kill_count, kill_count) 29 | 30 | print(max_kill_count) 31 | -------------------------------------------------------------------------------- /4주차/18232/18232_python_파랑.py: -------------------------------------------------------------------------------- 1 | # 18232 텔레포트 정거장 2 | 3 | import sys 4 | from collections import deque 5 | 6 | readline = sys.stdin.readline 7 | 8 | n, m = map(int, readline().split()) 9 | s, e = map(int, readline().split()) 10 | teleport = [[] for _ in range(n + 1)] 11 | for _ in range(m): 12 | x, y = map(int, readline().split()) 13 | teleport[x].append(y) 14 | teleport[y].append(x) 15 | 16 | visited = [0] * (n + 1) 17 | targets = deque([s]) 18 | while True: 19 | x = targets.popleft() 20 | if x == e: 21 | print(visited[e]) 22 | break 23 | for nx in (x - 1, x + 1, *teleport[x]): 24 | if 0 < nx <= n and not visited[nx]: 25 | visited[nx] = visited[x] + 1 26 | targets.append(nx) 27 | -------------------------------------------------------------------------------- /1주차/10814/10814_python_파랑.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | readline = sys.stdin.readline 4 | 5 | 6 | # O(NlogN) 풀이 7 | def sort_users1(): 8 | count = int(readline()) 9 | users = [readline() for _ in range(count)] 10 | 11 | users.sort(key=lambda x: int(x.split()[0])) 12 | for user in users: 13 | print(user, end="") 14 | 15 | 16 | # O(N) 풀이 17 | def sort_users2(): 18 | count = int(readline()) 19 | users = [[] for _ in range(201)] 20 | for _ in range(count): 21 | age, name = readline().split() 22 | users[int(age)].append(name) 23 | 24 | for age in range(1, 201): 25 | if users[age]: 26 | for name in users[age]: 27 | print("%d %s" % (age, name)) 28 | 29 | 30 | sort_users2() 31 | -------------------------------------------------------------------------------- /7주차/24499/24499_kotlin_페퍼.kt: -------------------------------------------------------------------------------- 1 | import kotlin.math.max 2 | 3 | fun main() { 4 | var inputs = readln().split(" ") 5 | val N = inputs[0].toInt() 6 | val K = inputs[1].toInt() 7 | 8 | val flavor = IntArray(2 * N) 9 | inputs = readln().split(" ") 10 | 11 | for (i in 0 until N) { 12 | flavor[i] = inputs[i].toInt() 13 | } 14 | for (i in N until 2 * N) { 15 | flavor[i] = flavor[i - N] 16 | } 17 | 18 | var pieSum = 0 19 | for (i in 0 until K) { 20 | pieSum += flavor[i] 21 | } 22 | 23 | var result = pieSum 24 | for (i in 0 until N) { 25 | result -= flavor[i] 26 | result += flavor[i + K] 27 | pieSum = max(pieSum, result) 28 | } 29 | println(pieSum) 30 | } 31 | -------------------------------------------------------------------------------- /7주차/24499/Kotlin_24499_이영환.kt: -------------------------------------------------------------------------------- 1 | import java.util.StringTokenizer 2 | 3 | fun main() { 4 | var st = StringTokenizer(readLine()) 5 | val n = st.nextToken().toInt() 6 | val k = st.nextToken().toInt() 7 | 8 | val pies = arrayListOf() 9 | st = StringTokenizer(readLine()) 10 | for (i:Int in 1 .. n) { 11 | pies.add(st.nextToken().toInt()) 12 | } 13 | var now = pies.subList(0, k).sum() 14 | var max = now 15 | var firstOfPiePieces = 0 16 | for (i:Int in k until n + k) { 17 | val temp = now - pies[firstOfPiePieces] + pies[i % n] 18 | if (temp > max) { 19 | max = temp 20 | } 21 | now = temp 22 | firstOfPiePieces++ 23 | } 24 | 25 | println(max) 26 | } 27 | -------------------------------------------------------------------------------- /1주차/4796/4796_cpp_케이.cpp: -------------------------------------------------------------------------------- 1 | // 220630 #4796 캠핑 2 | // greedy 3 | #include 4 | #define sz(v) (int)v.size() 5 | #define all(v) (v).begin(), (v).end() 6 | #define press(v) (v).erase(unique(all(v)), (v).end()) 7 | using namespace std; 8 | typedef long long ll; 9 | typedef pair pi; 10 | typedef pair pii; 11 | typedef pair pl; 12 | const int MAX = 53; 13 | const int INF = 0x3f3f3f3f; 14 | const ll LNF = 0x3f3f3f3f3f3f3f3f; 15 | const int MOD = 1e9 + 7; 16 | int l,p,v; 17 | int main() { 18 | cin.tie(0)->sync_with_stdio(0); 19 | for (int t=1;;t++) { 20 | cin>>l>>p>>v; 21 | if(!l&&!p&&!v)break; 22 | // 사용할 수 있는 만큼 최대한 사용하는 게 답 23 | cout<<"Case "< map = Map.of( 14 | 1, 1, 15 | 2, 2, 16 | 3, 3, 17 | 4, 4, 18 | 5, 5, 19 | 6, 4, 20 | 7, 3, 21 | 0, 2 22 | ); 23 | 24 | System.out.println(map.get(input % 8)); 25 | 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /2주차/23827/java_23827_루나.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.Arrays; 5 | 6 | public class Main { 7 | public static void main(String[] args) throws IOException { 8 | int DIVISOR = 1000000007; 9 | 10 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | 12 | int N = Integer.parseInt(br.readLine()); 13 | long[] input = Arrays.stream(br.readLine().split(" ")) 14 | .mapToLong(Long::parseLong) 15 | .toArray(); 16 | 17 | long sum = Arrays.stream(input).sum(); 18 | long result = 0; 19 | 20 | for (long i : input) { 21 | sum -= i; 22 | result += sum * i; 23 | result %= DIVISOR; 24 | } 25 | 26 | System.out.println(result); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /1주차/17362/17362_java_유현호.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | 7 | public static void main(String[] args) throws IOException { 8 | 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | int i = Integer.parseInt(br.readLine()); 11 | 12 | int x = i % 8; 13 | if (i <= 5) { 14 | System.out.println(i); 15 | } else if (x == 6) { 16 | System.out.println(4); 17 | } else if (x == 7) { 18 | System.out.println(3); 19 | } else if (x == 0) { 20 | System.out.println(2); 21 | } else { 22 | System.out.println(x); 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /3주차/17123/17123_python_파랑.py: -------------------------------------------------------------------------------- 1 | # 17123 배열 놀이 2 | 3 | import sys 4 | 5 | readline = sys.stdin.readline 6 | 7 | t = int(readline()) 8 | 9 | for _ in range(t): 10 | n, m = map(int, readline().split()) 11 | arr = [list(map(int, readline().split())) for _ in range(n)] 12 | sum_of_rows = [sum(row) for row in arr] 13 | sum_of_cols = [sum([arr[row][col] for col in range(n)]) for row in range(n)] 14 | 15 | for _ in range(m): 16 | r1, c1, r2, c2, v = map(int, readline().split()) 17 | row = r2 - r1 + 1 18 | col = c2 - c1 + 1 19 | for r in range(r1 - 1, r2): 20 | sum_of_rows[r] += v * col 21 | for c in range(c1 - 1, c2): 22 | sum_of_cols[c] += v * row 23 | 24 | print(*sum_of_rows) 25 | print(*sum_of_cols) 26 | -------------------------------------------------------------------------------- /3주차/1254/1254_cpp_케이: -------------------------------------------------------------------------------- 1 | #include 2 | #define sz(v) (int)v.size() 3 | #define int long long 4 | #define all(v) (v).begin(), (v).end() 5 | #define press(v) (v).erase(unique(all(v)), (v).end()) 6 | using namespace std; 7 | typedef pair pi; 8 | typedef pair pii; 9 | const int MAX = 1e3+7; 10 | const int INF = 0x3f3f3f3f3f3f3f3f; 11 | const int MOD = 1e9 + 7; 12 | string s; 13 | bool check(string k){ 14 | string t=k; 15 | reverse(all(k)); 16 | return t==k; 17 | } 18 | int32_t main() { 19 | cin.tie(0)->sync_with_stdio(0); 20 | cin>>s; 21 | int ans=0; 22 | string tmp; 23 | for (int i = 0; i < sz(s); i++) { 24 | string tmp=s.substr(i); 25 | if(check(tmp))ans=max(ans,sz(tmp)); 26 | } 27 | cout<<2*sz(s)-ans; 28 | } 29 | -------------------------------------------------------------------------------- /6주차/24393/24393-python-leo.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | 6 | def solution(n, cards): 7 | for _ in range(n): 8 | pieces = map(int, input().split()) 9 | left_cards = cards[:13] 10 | right_cards = cards[13:] 11 | answer = [] 12 | for index, value in enumerate(pieces): 13 | if index % 2 == 0: 14 | answer.extend(right_cards[:value]) 15 | right_cards = right_cards[value:] 16 | else: 17 | answer.extend(left_cards[:value]) 18 | left_cards = left_cards[value:] 19 | cards = answer.copy() 20 | return cards.index(77) + 1 21 | 22 | 23 | n = int(input()) 24 | cards = [77] + [i + 1 for i in range(26)] 25 | print(solution(n, cards)) 26 | -------------------------------------------------------------------------------- /3주차/1254/1254_python_정.py: -------------------------------------------------------------------------------- 1 | raw = input() 2 | 3 | N = len(raw) 4 | 5 | max_palindrome_count = 0 6 | max_palindrome_idx = (0, 0) 7 | 8 | for start_idx in range(N-1): 9 | is_palindrome = True 10 | end_idx = N-1 11 | for i in range(end_idx - start_idx): 12 | if start_idx + i > end_idx - i: break 13 | if raw[start_idx + i] != raw[end_idx - i]: 14 | is_palindrome = False 15 | 16 | if is_palindrome: 17 | cur_palindrome_count = end_idx - start_idx + 1 18 | if max_palindrome_count < cur_palindrome_count: 19 | max_palindrome_count = cur_palindrome_count 20 | max_palindrome_idx = (start_idx, end_idx) 21 | 22 | if max_palindrome_count == 0: 23 | print(N + N - 1) 24 | else: 25 | print(N + N - max_palindrome_count) 26 | -------------------------------------------------------------------------------- /7주차/24499/24499_cpp_K.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #define sz(v) (int)v.size() 3 | #define int long long 4 | #define all(v) (v).begin(), (v).end() 5 | #define press(v) (v).erase(unique(all(v)), (v).end()) 6 | using namespace std; 7 | typedef pair pi; 8 | typedef pair pii; 9 | const int MAX = 2e5+7; 10 | const int INF = 0x3f3f3f3f3f3f3f3f; 11 | const int MOD = 1e9 + 7; 12 | int N,K,a[MAX],p[MAX],ans; 13 | int32_t main() { 14 | cin.tie(0)->sync_with_stdio(0); 15 | cin>>N>>K; 16 | for (int i = 1; i <= N; i++) { 17 | cin >> a[i]; 18 | a[i + N] = a[i]; 19 | } 20 | for (int i = 1; i < N+K; i++) { 21 | p[i]=p[i-1]+a[i]; 22 | } 23 | for (int i = 0; i < N; i++) { 24 | ans=max(ans,p[i+K]-p[i]); 25 | } 26 | cout< 0: 12 | idx += (k - 1) 13 | idx %= len(array) 14 | result.append(array.pop(idx)) 15 | return result 16 | 17 | 18 | # deque의 rotate 메서드 사용: 92ms 19 | def method2(k, array): 20 | result = [] 21 | linked_list = deque(array) 22 | while linked_list: 23 | linked_list.rotate(-(k - 1)) 24 | result.append(linked_list.popleft()) 25 | return result 26 | 27 | 28 | n, k = map(int, sys.stdin.readline().split()) 29 | array = [str(x) for x in range(1, n + 1)] 30 | result = method1(k, array) 31 | 32 | print("<" + ", ".join(result) + ">") 33 | -------------------------------------------------------------------------------- /3주차/11568/11568_cpp_케이: -------------------------------------------------------------------------------- 1 | #include 2 | #define sz(v) (int)v.size() 3 | #define int long long 4 | #define all(v) (v).begin(), (v).end() 5 | #define press(v) (v).erase(unique(all(v)), (v).end()) 6 | using namespace std; 7 | typedef pair pi; 8 | typedef pair pii; 9 | const int MAX = 1e3+7; 10 | const int INF = 0x3f3f3f3f3f3f3f3f; 11 | const int MOD = 1e9 + 7; 12 | int N,a[MAX]; 13 | int32_t main() { 14 | cin.tie(0)->sync_with_stdio(0); 15 | cin>>N; 16 | for (int i = 0; i < N; i++) { 17 | cin>>a[i]; 18 | } 19 | vector ans; 20 | for (int i = 0; i < N; i++) { 21 | int idx=lower_bound(all(ans), a[i])-ans.begin(); 22 | if(idx= len(pies): 20 | right %= len(pies) 21 | 22 | answer = max(answer, tmp_sum) 23 | 24 | for _ in range(len(pies)): 25 | tmp_sum += pies[right] 26 | tmp_sum -= pies[left] 27 | 28 | answer = max(answer, tmp_sum) 29 | right += 1 30 | left += 1 31 | 32 | if right >= len(pies): 33 | right %= len(pies) 34 | 35 | print(answer) -------------------------------------------------------------------------------- /2주차/11866/11866_kotlin_페퍼.kt: -------------------------------------------------------------------------------- 1 | fun main() { 2 | val inputs = readln().split(" ") 3 | val n = inputs[0].toInt() 4 | val k = inputs[1].toInt() 5 | 6 | val deque = initDeque(n) 7 | val progression = ArrayList() 8 | var pointer = 1 9 | 10 | while (deque.isNotEmpty()) { 11 | val number = deque.removeFirst() 12 | if (pointer != k) { 13 | deque.add(number) 14 | pointer++ 15 | } else { 16 | progression.add(number) 17 | pointer = 1 18 | } 19 | } 20 | 21 | println(progression.joinToString(prefix = "<", postfix = ">")) 22 | } 23 | 24 | private fun initDeque(n: Int): ArrayDeque { 25 | val deque = ArrayDeque() 26 | for (number in 1..n) { 27 | deque.add(number) 28 | } 29 | return deque 30 | } 31 | -------------------------------------------------------------------------------- /2주차/12789/12789_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from collections import deque 3 | 4 | n = int(sys.stdin.readline()) 5 | dequeLst = deque(map(int, sys.stdin.readline().split())) # 왼쪽 뽑는 기본 deque 6 | checkLst = [] # deque에서 뽑힌 추가로 저장된 아래진영 7 | current = 1 # 시작 번호 8 | 9 | for i in range(n): # deque 10 | left = dequeLst.popleft() 11 | if left == current: 12 | current += 1 13 | for _ in range(len(checkLst)): # 추가진영 14 | if checkLst[-1] == current: 15 | current += 1 16 | checkLst.pop() 17 | 18 | continue 19 | checkLst.append(left) 20 | 21 | answer = "Nice" 22 | for index, value in enumerate(checkLst): 23 | if index != len(checkLst) - 1 and checkLst[index] <= checkLst[index + 1]: 24 | answer = "Sad" 25 | break 26 | 27 | print(answer) 28 | -------------------------------------------------------------------------------- /1주차/17362/17362_java_연로그.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | 7 | private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 8 | 9 | public static void main(String[] args) throws IOException { 10 | int n = Integer.parseInt(br.readLine()); 11 | System.out.println(calculate(n)); 12 | br.close(); 13 | } 14 | 15 | public static int calculate(int n) { 16 | int temp = n % 8; 17 | if (temp == 2 || temp == 0) { 18 | return 2; 19 | } 20 | if (temp == 3 || temp == 7) { 21 | return 3; 22 | } 23 | if (temp == 4 || temp == 6) { 24 | return 4; 25 | } 26 | return temp; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /1주차/17362/java_17362_루키.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class java_17362_루키 { 6 | 7 | public static void main(String[] args) throws IOException { 8 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | 10 | int n = Integer.parseInt(br.readLine()); 11 | 12 | int temp = n % 8; 13 | System.out.println(calculate(temp)); 14 | } 15 | 16 | private static int calculate(int temp) { 17 | if (temp == 2 || temp == 0) { 18 | return 2; 19 | } 20 | if (temp == 3 || temp == 7) { 21 | return 3; 22 | } 23 | if (temp == 4 || temp == 6) { 24 | return 4; 25 | } 26 | return temp; 27 | } 28 | } 29 | 30 | 31 | -------------------------------------------------------------------------------- /1주차/4796/java_4796_유콩.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | public static void main(String[] args) throws IOException { 7 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 8 | int count = 1; 9 | 10 | while (true) { 11 | String[] days = br.readLine().split(" "); 12 | int l = Integer.parseInt(days[0]); 13 | int p = Integer.parseInt(days[1]); 14 | int v = Integer.parseInt(days[2]); 15 | if (l == 0) { 16 | break; 17 | } 18 | int usable = (v / p) * l + Math.min(l, v % p); 19 | System.out.printf("Case %d: %d\n", count, usable); 20 | count++; 21 | } 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /6주차/14938/14938_python_yaho.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | N, m, r = map(int, input().split()) 6 | item = [0] + list(map(int, input().split())) 7 | 8 | arr = [[sys.maxsize for _ in range(N + 1)] for _ in range(N + 1)] 9 | 10 | for i in range(N + 1): 11 | arr[i][i] = 0 12 | 13 | for _ in range(r): 14 | a, b, dist = map(int, input().split()) 15 | arr[a][b] = dist 16 | arr[b][a] = dist 17 | 18 | for k in range(N + 1): 19 | for i in range(N + 1): 20 | for j in range(N + 1): 21 | if arr[i][j] > arr[i][k] + arr[k][j]: 22 | arr[i][j] = arr[i][k] + arr[k][j] 23 | 24 | answer = 0 25 | 26 | for i in range(1, N + 1): 27 | can_get_item = [item[x] for x in range(1, N + 1) if arr[i][x] <= m] 28 | answer = max(answer, sum(can_get_item)) 29 | 30 | print(answer) 31 | -------------------------------------------------------------------------------- /1주차/17362/17362_python_파랑.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | 4 | def find_finger_number1(num): 5 | if num == 1: 6 | print(num) 7 | else: 8 | num -= 2 9 | if num // 4 % 2 == 1: 10 | result = 4 - (num % 4) 11 | else: 12 | result = (num % 4) + 2 13 | print(result) 14 | 15 | 16 | def find_finger_number2(num): 17 | result = (num - 1) % 8 + 1 18 | 19 | if result >= 5: 20 | result = 10 - result 21 | 22 | print(result) 23 | 24 | 25 | def find_finger_number3(num): 26 | remainder = num % 8 27 | 28 | if remainder == 6: 29 | print(4) 30 | elif remainder == 7: 31 | print(3) 32 | elif remainder == 0: 33 | print(2) 34 | else: 35 | print(remainder) 36 | 37 | 38 | n = int(sys.stdin.readline()) 39 | find_finger_number2(n) 40 | -------------------------------------------------------------------------------- /5주차/16432/16432_python_제로.py: -------------------------------------------------------------------------------- 1 | import copy 2 | import sys 3 | 4 | input = sys.stdin.readline 5 | 6 | 7 | def dfs(i, cakes, prevCake): 8 | # 완료 시점 9 | if i == n: 10 | for temp in cakes: 11 | print(temp) 12 | exit(0) 13 | # dfs 14 | for cake in lst[i]: 15 | # 방문한 적 없고, 이전 떡과 다를때 16 | if not visited[i+1][cake] and cake != prevCake: 17 | visited[i+1][cake] = True 18 | new_cakes = copy.deepcopy(cakes) 19 | new_cakes.append(cake) 20 | dfs(i + 1, new_cakes, cake) 21 | 22 | 23 | n = int(input()) 24 | # 떡 정보 25 | lst = [] 26 | for _ in range(n): 27 | lst.append(list(map(int, input().split()))[1:]) 28 | # [n번째날][떡 종류] 29 | visited = [[False for _ in range(11)] for i in range(n + 1)] 30 | dfs(0, [], 0) # i번째날, 떡 넣는 리스트, 전날 먹은 떡 31 | print(-1) 32 | -------------------------------------------------------------------------------- /2주차/22941/22941_python_파랑.py: -------------------------------------------------------------------------------- 1 | # 22941 RPG 마스터 오명진 2 | 3 | import sys 4 | 5 | readline = sys.stdin.readline 6 | 7 | warrior_hp, warrior_atk, monster_hp, monster_atk = map(int, readline().split()) 8 | p, s = map(int, readline().split()) 9 | 10 | hp_flag = True 11 | while True: 12 | cnt = 0 13 | if hp_flag: 14 | cnt = max(min(warrior_hp // monster_atk, (monster_hp - p) // warrior_atk), 1) 15 | else: 16 | cnt = max(min(warrior_hp // monster_atk, monster_hp // warrior_atk), 1) 17 | warrior_hp -= cnt * monster_atk 18 | monster_hp -= cnt * warrior_atk 19 | 20 | if warrior_hp <= 0 or monster_hp <= 0: 21 | break 22 | 23 | if hp_flag and 1 <= monster_hp <= p: 24 | hp_flag = False 25 | monster_hp += s 26 | 27 | if monster_hp <= 0: 28 | print("Victory!") 29 | else: 30 | print("gg") 31 | -------------------------------------------------------------------------------- /3주차/1254/1254_java_디우.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | class Main1254 { 6 | 7 | final static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 8 | 9 | public static void main(String[] args) throws IOException { 10 | String input = reader.readLine(); 11 | int size = input.length(); 12 | 13 | int count = 0; 14 | while (true) { 15 | final StringBuffer sb = new StringBuffer(input); 16 | final String reverse = sb.reverse().toString(); 17 | if (input.equals(reverse)) { 18 | break; 19 | } 20 | 21 | input = input.substring(1); 22 | count ++; 23 | } 24 | 25 | System.out.print(size + count); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /6주차/14938/14938_python_아서.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | n, m, r = map(int, input().split()) 6 | items = list(map(int, input().split())) 7 | board = list([sys.maxsize] * n for _ in range(n)) 8 | 9 | for _ in range(r): 10 | a, b, l = map(int, input().split()) 11 | board[a - 1][b - 1] = min(board[a - 1][b - 1], l) 12 | board[b - 1][a - 1] = min(board[b - 1][a - 1], l) 13 | 14 | for c in range(n): 15 | for a in range(n): 16 | for b in range(n): 17 | if a == b: 18 | board[a][b] = 0 19 | else: 20 | board[a][b] = min(board[a][b], board[a][c] + board[c][b]) 21 | 22 | res = 0 23 | for i in range(n): 24 | tmp = 0 25 | for j in range(n): 26 | if board[i][j] <= m: 27 | tmp += items[j] 28 | res = max(tmp, res) 29 | print(res) 30 | -------------------------------------------------------------------------------- /2주차/22941/22941_python_토르.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | import math 3 | 4 | HPY, ATKY, HPM, ATKM = map(int, input().split()) # 용사 Hp, 용사 ATK, 마왕 HP, 마왕 ATK 5 | P, S = map(int, input().split()) # 스킬 발동 시점, 회복량 6 | 7 | # 용사 공격 -> 마왕 체력 감소 -> 마왕 공격 -> 용사 체력 감소 8 | # 마왕 체력이 1 이상 p이하이면 S 만큼 체력회복 9 | 10 | iter_time = min((HPY - 1) // ATKM, (HPM - P - 1) // ATKY) 11 | 12 | HPY -= iter_time * ATKM 13 | HPM -= iter_time * ATKY 14 | 15 | HPM -= ATKY 16 | 17 | if HPM <= 0: 18 | print("Victory!") 19 | exit() 20 | 21 | HPY -= ATKM 22 | if HPM <= 0: 23 | print("gg") 24 | exit() 25 | 26 | if 1 <= HPM <= P: 27 | HPM += S 28 | 29 | iter_time = min((HPY - 1) // ATKM, (HPM - 1) // ATKY) 30 | 31 | HPY -= iter_time * ATKM 32 | HPM -= iter_time * ATKY 33 | 34 | HPM -= ATKY 35 | if HPM <= 0: 36 | print("Victory!") 37 | else: 38 | print("gg") -------------------------------------------------------------------------------- /3주차/1254/1254_java_매트.java: -------------------------------------------------------------------------------- 1 | import java.util.Scanner; 2 | 3 | public class Main { 4 | 5 | public static void main(String[] args) { 6 | Scanner scanner = new Scanner(System.in); 7 | String s = scanner.nextLine(); 8 | 9 | int count = s.length(); 10 | for (int i = 0; i < s.length(); i++) { 11 | if (isPalindrome(s.substring(i))) { 12 | break; 13 | } 14 | count++; 15 | } 16 | 17 | System.out.println(count); 18 | } 19 | 20 | private static boolean isPalindrome(String word) { 21 | int half = word.length() / 2; 22 | for (int i = 0; i < half; i++) { 23 | if (word.charAt(i) != word.charAt(word.length() - i - 1)) { 24 | return false; 25 | } 26 | } 27 | 28 | return true; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /2주차/23827/23827_cpp_케이.cpp: -------------------------------------------------------------------------------- 1 | // 수열 (Easy) 2 | // O(N) 3 | #include 4 | #define sz(v) (int)v.size() 5 | #define int long long 6 | #define all(v) (v).begin(), (v).end() 7 | #define press(v) (v).erase(unique(all(v)), (v).end()) 8 | using namespace std; 9 | typedef pair pi; 10 | typedef pair pii; 11 | const int MAX = 5e5+7; 12 | const int INF = 0x3f3f3f3f3f3f3f3f; 13 | const int MOD = 1e9 + 7; 14 | int N,a[MAX],p[MAX],ans; 15 | int32_t main() { 16 | cin.tie(0)->sync_with_stdio(0); 17 | cin>>N; 18 | for (int i = 1; i <= N; i++) { 19 | cin>>a[i]; 20 | // prefix_sum 21 | p[i]=p[i-1]+a[i]; 22 | } 23 | for (int i = 1; i <= N; i++) { 24 | // ai * a(i+1... +aN) + ... 25 | // use prefix_sum -> o(N) 26 | ans+=a[i]*(p[N]-p[i]); 27 | ans%=MOD; 28 | } 29 | cout<() 7 | 8 | var target = 1 9 | while (numbers.isNotEmpty()) { 10 | if (stack.isNotEmpty() && stack.peek() == target) { 11 | target++ 12 | stack.pop() 13 | continue 14 | } 15 | val number = numbers.removeFirst() 16 | if (number == target) { 17 | target++ 18 | } else { 19 | stack.push(number) 20 | } 21 | } 22 | 23 | while (stack.isNotEmpty() && stack.peek() == target) { 24 | stack.pop() 25 | target++ 26 | } 27 | 28 | if (target >= n) { 29 | println("Nice") 30 | } else { 31 | println("Sad") 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /2주차/23827/java_23827_panda.java: -------------------------------------------------------------------------------- 1 | package algorithm_study.week2; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | import java.util.StringTokenizer; 7 | 8 | public class java_23827_panda { 9 | public static void main(String[] args) throws IOException { 10 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | int N = Integer.parseInt(br.readLine()); 12 | 13 | long sum = 0; 14 | long answer = 0; 15 | StringTokenizer st = new StringTokenizer(br.readLine()); 16 | for (int i = 0; i < N; i++) { 17 | long number = Integer.parseInt(st.nextToken()); 18 | answer += sum * number; 19 | answer %= 1_000_000_007; 20 | sum += number; 21 | } 22 | System.out.println(answer); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /1주차/14659/main.cpp: -------------------------------------------------------------------------------- 1 | // 220630 #14659 한조서열정리하고옴ㅋㅋ 2 | // implementation, sliding_window 3 | // O(N) 4 | #include 5 | #define sz(v) (int)v.size() 6 | #define all(v) (v).begin(), (v).end() 7 | #define press(v) (v).erase(unique(all(v)), (v).end()) 8 | using namespace std; 9 | typedef long long ll; 10 | typedef pair pi; 11 | typedef pair pii; 12 | typedef pair pl; 13 | const int MAX = 3e4+7; 14 | const int INF = 0x3f3f3f3f; 15 | const ll LNF = 0x3f3f3f3f3f3f3f3f; 16 | const int MOD = 1e9 + 7; 17 | int n,k,m,cnt,ans; 18 | int main() { 19 | cin.tie(0)->sync_with_stdio(0); 20 | cin>>n; 21 | for (int i = 0; i < n; i++) { 22 | cin>>k; 23 | if(m fingerNumberCycle = List.of(2, 1, 2, 3, 4, 5, 4, 3); 16 | private static final int CYCLE_LENGTH = 8; 17 | 18 | private final int value; 19 | 20 | public InputNumber(final int value) { 21 | this.value = value; 22 | } 23 | 24 | public int getFingerNumber() { 25 | return fingerNumberCycle.get(value % CYCLE_LENGTH); 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /1주차/17362/java_17362_루나.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | public static void main(String[] args) throws IOException { 7 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 8 | int n = Integer.parseInt(br.readLine()); 9 | 10 | int finger = n % 8; 11 | 12 | if (finger == 1) { 13 | System.out.println(1); 14 | } 15 | if (finger == 2 || finger == 0) { 16 | System.out.println(2); 17 | } 18 | if (finger == 3 || finger == 7) { 19 | System.out.println(3); 20 | } 21 | if (finger == 4 || finger == 6) { 22 | System.out.println(4); 23 | } 24 | if (finger == 5) { 25 | System.out.println(5); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /3주차/1254/1254_java_hoho.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | // 팰린드롬 만들기 6 | public class Main { 7 | public static void main(String[] args) throws IOException { 8 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | String word = br.readLine(); 10 | int length = word.length(); 11 | int answer = 0; 12 | 13 | for (int i = 0; i < length; i++) { 14 | if (isPalindrome(word.substring(i))) { 15 | answer = length + i; 16 | break; 17 | } 18 | } 19 | System.out.println(answer); 20 | } 21 | 22 | public static boolean isPalindrome(String word) { 23 | StringBuilder sb = new StringBuilder(word); 24 | return word.equals(sb.reverse().toString()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /3주차/11568/11568_java_루나.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.Arrays; 5 | 6 | public class Main { 7 | public static void main(String[] args) throws IOException { 8 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | 10 | int N = Integer.parseInt(br.readLine()); 11 | 12 | long[] inputs = Arrays.stream(br.readLine().split(" ")) 13 | .mapToLong(Long::parseLong) 14 | .toArray(); 15 | int[] d = new int[N]; 16 | 17 | for (int i = 0; i < N; i++) { 18 | d[i] = 1; 19 | for (int j = 0; j < i; j++) { 20 | if (inputs[j] < inputs[i] && d[i] < d[j] + 1) { 21 | d[i] = d[j] + 1; 22 | } 23 | } 24 | } 25 | 26 | int max = Integer.MIN_VALUE; 27 | for (int i : d) { 28 | max = Math.max(max, i); 29 | } 30 | System.out.println(max); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /3주차/1254/java_1254_panda.java: -------------------------------------------------------------------------------- 1 | package algorithm_study.week3; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | 7 | public class java_1254_panda { 8 | public static void main(String[] args) throws IOException { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | String input = br.readLine(); 11 | int length = input.length(); 12 | int answer = 0; 13 | 14 | for (int i = 0; i < length; i++) { 15 | if (isPalindrome(input.substring(i))) { 16 | answer = length + i; 17 | break; 18 | } 19 | } 20 | System.out.println(answer); 21 | } 22 | 23 | private static boolean isPalindrome(String text) { 24 | return text.equals(new StringBuilder(text).reverse().toString()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /2주차/22941/22941_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | playerHP, playerATK, bossHP, bossATK = map(int, sys.stdin.readline().split()) 4 | p, s = map(int, sys.stdin.readline().split()) 5 | bossMoreChance = True 6 | 7 | while True: 8 | # 몫을 통해 처음 한번 빼고 시작 9 | mok = 0 10 | if bossMoreChance: 11 | mok = max(min((bossHP-p)//playerATK-1, playerHP//bossATK-1), 0) 12 | else: 13 | mok = max(min(bossHP // playerATK-1, playerHP // bossATK-1), 0) 14 | bossHP -= playerATK * mok 15 | playerHP -= bossATK * mok 16 | # 1 17 | bossHP -= playerATK 18 | # 2 19 | if bossHP <= 0: 20 | print("Victory!") 21 | break 22 | # 3 23 | playerHP -= bossATK 24 | # 4 25 | if playerHP <= 0: 26 | print("gg") 27 | break 28 | # 5 29 | if (1 <= bossHP <= p) and bossMoreChance: 30 | bossHP += s 31 | bossMoreChance = False 32 | -------------------------------------------------------------------------------- /2주차/23827/23827_Java_연로그.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.StringTokenizer; 5 | 6 | public class Main { 7 | 8 | // ❗ 누적합이라는 개념을 처음 들어서 찾아보고 풀었습니다 9 | 10 | public static void main(String[] args) throws IOException { 11 | BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 12 | int N = Integer.parseInt(bf.readLine()); 13 | 14 | long result = 0; 15 | long sum = 0; 16 | StringTokenizer st = new StringTokenizer(bf.readLine()); 17 | for (int i = 0; i < N; i++) { 18 | long number = Long.parseLong(st.nextToken()); 19 | result += number * sum; 20 | result %= 1_000_000_007; 21 | sum += number; 22 | } 23 | 24 | System.out.println(result); 25 | bf.close(); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /3주차/17123/17123_python_정.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | T = int(input()) 6 | 7 | for _ in range(T): 8 | N, M = map(int, input().split()) 9 | row_sums = [0 for _ in range(N)] 10 | col_sums = [0 for _ in range(N)] 11 | 12 | for row_idx in range(N): 13 | row = list(map(int, input().split())) 14 | for col_idx in range(N): 15 | cur = row[col_idx] 16 | row_sums[row_idx] += cur 17 | col_sums[col_idx] += cur 18 | 19 | for _ in range(M): 20 | r1, c1, r2, c2, v = map(int, input().split()) 21 | r1 -= 1 22 | c1 -= 1 23 | for row_idx in range(r1, r2): 24 | row_sums[row_idx] += (c2 - c1) * v 25 | for col_idx in range(c1, c2): 26 | col_sums[col_idx] += (r2 - r1) * v 27 | 28 | print(" ".join(map(str, row_sums))) 29 | print(" ".join(map(str, col_sums))) 30 | -------------------------------------------------------------------------------- /4주차/18232/18232_python_정.py: -------------------------------------------------------------------------------- 1 | N, M = map(int, input().split()) 2 | start, end = map(int, input().split()) 3 | 4 | teleports = {} 5 | for i in range(1, N+1): 6 | teleports[i] = [] 7 | for _ in range(M): 8 | x, y = map(int, input().split()) 9 | teleports[x].append(y) 10 | teleports[y].append(x) 11 | 12 | positions = [start] 13 | vis = [True] + [False] * N 14 | vis[start] = True 15 | moves = 0 16 | 17 | while vis[end] == False: 18 | moves += 1 19 | new_positions = [] 20 | for pos in positions: 21 | left = pos - 1 22 | right = pos + 1 23 | destinations = [left, right] + teleports[pos] 24 | for dest in destinations: 25 | if dest == 0 or dest == N + 1: continue 26 | if vis[dest]: continue 27 | vis[dest] = True 28 | new_positions.append(dest) 29 | positions = new_positions 30 | 31 | print(moves) 32 | -------------------------------------------------------------------------------- /6주차/24229/24229_python_토르.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | import sys 3 | import copy 4 | from collections import defaultdict 5 | import heapq 6 | 7 | N = int(input()) 8 | roads = [] 9 | 10 | for _ in range(N): 11 | roads.append(tuple(map(int, input().split()))) 12 | 13 | roads.sort() 14 | last_l, last_r = 0, 0 15 | max_index = 0 16 | answer = 0 17 | 18 | for l, r in roads: 19 | # 이전과 겹치는 경우 20 | if l <= last_r: 21 | # 완전히 이전것과 겹치는 경우 22 | if r <= last_r: 23 | continue 24 | # 현재 오른쪽이 더 길기는 한 경우 25 | max_index = max(max_index, 2 * r - last_l) 26 | # 이전과 겹치지 않는 경우 27 | else: 28 | # 이전에 점프해서 도달하지 못하는 경우 29 | if max_index < l: 30 | break 31 | # 이전에 점프해서 도달할 수 있는 경우 32 | max_index = max(max_index, 2 * r - l) 33 | last_l = l 34 | 35 | last_r = r 36 | answer = max(r, answer) 37 | 38 | print(answer) 39 | -------------------------------------------------------------------------------- /1주차/4796/java_4796_루나.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | public static void main(String[] args) throws IOException { 7 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 8 | int cnt = 0; 9 | 10 | while(true){ 11 | String[] input = br.readLine().split(" "); 12 | 13 | int L = Integer.parseInt(input[0]); 14 | int P = Integer.parseInt(input[1]); 15 | int V = Integer.parseInt(input[2]); 16 | 17 | if(L == 0 && P == 0 && V == 0){ 18 | break; 19 | } 20 | 21 | cnt++; 22 | int q = V / P; 23 | int r = V % P; 24 | int result = q * L + Math.min(r, L); 25 | 26 | System.out.printf("Case %d: %d\n", cnt, result); 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /3주차/3주차.iml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /1주차/10814/java_10814_아리.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.*; 5 | 6 | public class Main { 7 | 8 | public static void main(String[] args) throws IOException { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | 11 | int count = Integer.parseInt(br.readLine()); 12 | List list = new ArrayList<>(); 13 | 14 | for (int i = 0; i < count; i++) { 15 | list.add(br.readLine()); 16 | } 17 | 18 | Collections.sort(list, Comparator.comparingInt(input -> Integer.parseInt(new StringTokenizer(input).nextToken(), " "))); 19 | 20 | StringBuilder result = new StringBuilder(); 21 | for (String member : list) { 22 | result.append(member + "\n"); 23 | } 24 | 25 | System.out.println(result); 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /1주차/14659/14659_java_라라.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | import java.util.List; 3 | import java.util.Scanner; 4 | 5 | public class BOJ_14659 { 6 | 7 | public static void main(String[] args) { 8 | Scanner sc = new Scanner(System.in); 9 | int answer = 0; 10 | int N = sc.nextInt(); 11 | List mountains = new ArrayList<>(); 12 | 13 | for (int i = 0; i < N; i++) { 14 | mountains.add(sc.nextInt()); 15 | } 16 | 17 | for (int i = 0; i < N; i++) { 18 | int sum = 0; 19 | for (int j = i + 1; j < N; j++) { 20 | if (mountains.get(i) < mountains.get(j)) { 21 | break; 22 | } 23 | sum++; 24 | } 25 | if (sum > answer) { 26 | answer = sum; 27 | } 28 | } 29 | 30 | System.out.println(answer); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /3주차/17123/17123_python_토르.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | import sys 3 | 4 | T = int(input()) 5 | 6 | for _ in range(T): 7 | # N 줄에 걸쳐 2차원 배열 A 8 | N, M = map(int, input().split()) 9 | array = [list(map(int, input().split())) for _ in range(N)] 10 | # cum_sum_array[0][i] = i번째 행의 총합 11 | # cum_sum_array[1][j] = j번째 열의 총합 12 | cum_sum_array = [[0]*N for _ in range(2)] 13 | for i in range(N): 14 | cum_sum_array[0][i] = sum(array[i]) 15 | 16 | for i in range(N): 17 | cum_sum_array[1][i] = sum(array[m][i] for m in range(N)) 18 | for _ in range(M): 19 | r1, c1, r2, c2, v = map(int, input().split()) 20 | 21 | for i in range(r1-1, r2): 22 | cum_sum_array[0][i] += (c2 - c1 + 1) * v 23 | 24 | for i in range(c1-1, c2): 25 | cum_sum_array[1][i] += (r2 - r1 + 1) * v 26 | 27 | for i in range(2): 28 | print(*cum_sum_array[i]) 29 | -------------------------------------------------------------------------------- /4주차/18232/18232_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from collections import deque 3 | 4 | input = sys.stdin.readline 5 | n, m = map(int, input().split()) 6 | s, e = map(int, input().split()) 7 | db = [[] for _ in range(n+1)] 8 | visited = [False for _ in range(n+1)] 9 | for _ in range(m): 10 | x, y = map(int, input().split()) 11 | db[x].append(y) 12 | db[y].append(x) 13 | 14 | def bfs(start): 15 | q = deque() 16 | q.append((start, 0)) 17 | while q: 18 | # 현재위치, 시간 19 | x, hop = q.popleft() 20 | # 검증 21 | if x == e: 22 | return hop 23 | if 1 <= x <= n: 24 | if not visited[x]: 25 | visited[x] = True 26 | q.append((x-1, hop+1)) 27 | q.append((x+1, hop+1)) 28 | if len(db[x]) > 0: 29 | for y in db[x]: 30 | q.append((y, hop+1)) 31 | 32 | print(bfs(s)) 33 | -------------------------------------------------------------------------------- /1주차/10814/10814_java_라라.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | import java.util.List; 3 | import java.util.Scanner; 4 | 5 | public class BOJ_10814 { 6 | 7 | public static void main(String[] args) { 8 | Scanner sc = new Scanner(System.in); 9 | int N = sc.nextInt(); 10 | sc.nextLine(); 11 | List people = new ArrayList<>(); 12 | 13 | for (int i = 0; i < N; i++) { 14 | String info = sc.nextLine(); 15 | people.add(info); 16 | } 17 | 18 | people.sort((o1, o2) -> { 19 | String[] s1 = o1.split(" "); 20 | int age1 = Integer.parseInt(s1[0]); 21 | 22 | String[] s2 = o2.split(" "); 23 | int age2 = Integer.parseInt(s2[0]); 24 | 25 | return age1 - age2; 26 | }); 27 | 28 | for (String person : people) { 29 | System.out.println(person); 30 | } 31 | } 32 | } 33 | 34 | -------------------------------------------------------------------------------- /1주차/4796/4796_Java_짱구.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.StringTokenizer; 5 | 6 | public class Main { 7 | 8 | public static void main(String[] args) throws IOException { 9 | 10 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | int count = 1; 12 | 13 | while (true) { 14 | StringTokenizer st = new StringTokenizer(br.readLine(), " "); 15 | 16 | int L = Integer.parseInt(st.nextToken()); 17 | int P = Integer.parseInt(st.nextToken()); 18 | int V = Integer.parseInt(st.nextToken()); 19 | 20 | if (L == 0 && P == 0 && V == 0) { 21 | break; 22 | } 23 | 24 | int result = V / P * L + Math.min(V % P, L); 25 | System.out.println("Case " + count++ + ": " + result); 26 | } 27 | } 28 | } -------------------------------------------------------------------------------- /2주차/2121/2121_cpp_케이.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #define sz(v) (int)v.size() 3 | #define int long long 4 | #define all(v) (v).begin(), (v).end() 5 | #define press(v) (v).erase(unique(all(v)), (v).end()) 6 | using namespace std; 7 | typedef pair pi; 8 | typedef pair pii; 9 | const int MAX = 5e5+7; 10 | const int INF = 0x3f3f3f3f3f3f3f3f; 11 | const int MOD = 1e9 + 7; 12 | int N,A,B,ans; 13 | set S; 14 | int32_t main() { 15 | cin.tie(0)->sync_with_stdio(0); 16 | cin>>N>>A>>B; 17 | for (int i = 0; i < N; i++) { 18 | int a,b; 19 | cin>>a>>b; 20 | S.insert({a,b}); 21 | } 22 | // map time performence < set time performence (set count: o(logN)) 23 | for (auto it=S.begin();it!=S.end();it++) { 24 | ans+=S.count({it->first+A,it->second})&&S.count({it->first,it->second+B}) 25 | &&S.count({it->first+A,it->second+B})?1:0; 26 | } 27 | cout< numbers = new ArrayList<>(); 14 | for (int i = 0; i < n; i++) { 15 | numbers.add(scanner.nextInt()); 16 | } 17 | 18 | int[] dp = new int[n]; 19 | for (int i = 0; i < n; i++) { 20 | dp[i] = 1; 21 | for (int j = 0; j < i; j++) { 22 | if (numbers.get(j) < numbers.get(i)) { 23 | dp[i] = Math.max(dp[i], dp[j] + 1); 24 | } 25 | } 26 | } 27 | 28 | int max = Arrays.stream(dp) 29 | .max() 30 | .orElse(0); 31 | System.out.println(max); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /3주차/11568/java_11568_panda.java: -------------------------------------------------------------------------------- 1 | package algorithm_study.week3; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | import java.util.Set; 7 | import java.util.StringTokenizer; 8 | import java.util.TreeSet; 9 | 10 | public class java_11568_panda { 11 | public static void main(String[] args) throws IOException { 12 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 13 | br.readLine(); 14 | 15 | StringTokenizer st = new StringTokenizer(br.readLine()); 16 | TreeSet array = new TreeSet<>(Set.of(Integer.parseInt(st.nextToken()))); 17 | while (st.hasMoreTokens()) { 18 | int num = Integer.parseInt(st.nextToken()); 19 | if (num <= array.last()) { 20 | array.remove(array.ceiling(num)); 21 | } 22 | array.add(num); 23 | } 24 | System.out.println(array.size()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /1주차/4796/4796_java_아키.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Main { 6 | public static void main(String[] args) throws IOException { 7 | //입력 8 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | 10 | int T = 0; 11 | while (true) { 12 | T++; 13 | String[] input = br.readLine().split(" "); 14 | int L = Integer.parseInt(input[0]); 15 | int P = Integer.parseInt(input[1]); 16 | int V = Integer.parseInt(input[2]); 17 | if (L == P && P == V && V == 0) { 18 | return; 19 | } 20 | 21 | //알고리즘 22 | int quotient = V / P; 23 | int remain = V % P; 24 | int result = quotient * L + Math.min(L, remain); 25 | 26 | System.out.println("Case " + T + ": " + result); 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /2주차/12789/java_12789_panda.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.Stack; 5 | import java.util.StringTokenizer; 6 | 7 | public class java_12789_panda { 8 | public static void main(String[] args) throws IOException { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | int N = Integer.parseInt(br.readLine()); 11 | 12 | Stack waitingLine = new Stack<>(); 13 | waitingLine.push(N+2); 14 | int current = 1; 15 | 16 | StringTokenizer st = new StringTokenizer(br.readLine()); 17 | for (int i = 1; i <= N; i++) { 18 | waitingLine.push(Integer.parseInt(st.nextToken())); 19 | while (waitingLine.peek() == current) { 20 | waitingLine.pop(); 21 | current++; 22 | } 23 | } 24 | System.out.println(current > N ? "Nice" : "Sad"); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /2주차/23827/23827_java_렉스.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.StringTokenizer; 5 | 6 | public class Main { 7 | 8 | private static final int DIVISOR = 1_000_000_007; 9 | 10 | public static void main(String[] args) throws IOException { 11 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 12 | 13 | int N = Integer.parseInt(br.readLine()); 14 | StringTokenizer st = new StringTokenizer(br.readLine()); 15 | int[] arr = new int[N]; 16 | long sum = 0; 17 | for (int i = 0; i < N; i++) { 18 | arr[i] = Integer.parseInt(st.nextToken()); 19 | sum += arr[i]; 20 | } 21 | 22 | long result = 0; 23 | for (int i : arr) { 24 | sum -= i; 25 | result += (sum * i); 26 | result %= DIVISOR; 27 | } 28 | System.out.println(result); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /6주차/14938/14938_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 14938번 2 | # 서강그라운드 3 | 4 | import sys 5 | 6 | readline = sys.stdin.readline 7 | INF = 16 8 | 9 | n, m, r = map(int, readline().rstrip().split()) 10 | items = list(map(int, readline().rstrip().split())) 11 | distance = [[INF for _ in range(n)] for _ in range(n)] 12 | 13 | for i in range(n): 14 | distance[i][i] = 0 15 | 16 | for _ in range(r): 17 | a, b, l = map(int, readline().rstrip().split()) 18 | 19 | distance[a - 1][b - 1] = l 20 | distance[b - 1][a - 1] = l 21 | 22 | for i in range(n): 23 | for j in range(n): 24 | for k in range(n): 25 | if distance[j][k] > distance[j][i] + distance[i][k]: 26 | distance[j][k] = distance[j][i] + distance[i][k] 27 | 28 | answer = 0 29 | 30 | for i in range(n): 31 | total_items = 0 32 | for j in range(n): 33 | if distance[i][j] <= m: 34 | total_items += items[j] 35 | answer = max(answer, total_items) 36 | 37 | print(answer) 38 | -------------------------------------------------------------------------------- /7주차/16288/16288_cpp_K.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #define sz(v) (int)v.size() 3 | #define int long long 4 | #define all(v) (v).begin(), (v).end() 5 | #define press(v) (v).erase(unique(all(v)), (v).end()) 6 | using namespace std; 7 | typedef pair pi; 8 | typedef pair pii; 9 | const int MAX = 1e2+7; 10 | const int INF = 0x3f3f3f3f3f3f3f3f; 11 | const int MOD = 1e9 + 7; 12 | int N,K,a[MAX]; 13 | bool vis[MAX]; 14 | int32_t main() { 15 | cin.tie(0)->sync_with_stdio(0); 16 | cin>>N>>K; 17 | for (int i = 1; i <= N; i++) { 18 | cin>>a[i]; 19 | } 20 | int cnt,res=0; 21 | for (cnt = 0; res < N; ++cnt) { 22 | int n=0,idx=0; 23 | for (int j = 1; j <= N; j++) { 24 | if(vis[j])continue; 25 | if(idx unit) { 20 | rest = unit; 21 | } 22 | int answer = rest + unit * (vacation / period); 23 | System.out.println("Case " + caseIndex++ + ": " + answer); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /2주차/23827/23827_정.py: -------------------------------------------------------------------------------- 1 | from itertools import combinations 2 | 3 | def timeOverSolution1(): 4 | input() 5 | sum = 0 6 | for (val1, val2) in combinations(list(map(int, input().split())), 2): 7 | sum += val1 * val2 8 | print(sum % 1_000_000_007) 9 | 10 | def timeOverSolution2(): 11 | N = int(input()) 12 | values = list(map(int, input().split())) 13 | sum = 0 14 | for length in range(1, N): 15 | for idx1 in range(N-1): 16 | idx2 = idx1 + length 17 | if idx2 >= N: 18 | break 19 | sum += values[idx1] * values[idx2] 20 | print(sum % 1_000_000_007) 21 | 22 | def fastSolution(): 23 | N = int(input()) 24 | values = list(map(int, input().split())) 25 | value_raw_sum = sum(values) 26 | 27 | total_sum = 0 28 | for idx in range(N): 29 | cur = values[idx] 30 | total_sum += cur * (value_raw_sum - cur) 31 | 32 | print((total_sum // 2) % 1_000_000_007) 33 | 34 | fastSolution() 35 | -------------------------------------------------------------------------------- /1주차/14659/java_14659_아리.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.*; 5 | 6 | public class Main { 7 | 8 | public static void main(String[] args) throws IOException { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | 11 | int count = Integer.parseInt(br.readLine()); 12 | 13 | int[] arr = Arrays.stream(br.readLine().split(" ")) 14 | .mapToInt(Integer::parseInt) 15 | .toArray(); 16 | 17 | int result = 0; 18 | int now = 0; 19 | int kill = 0; 20 | 21 | for (int i = 0; i < count; i++) { 22 | if (arr[now] > arr[i]) { 23 | kill++; 24 | } else { 25 | result = Math.max(result, kill); 26 | now = i; 27 | kill = 0; 28 | } 29 | } 30 | 31 | System.out.println(Math.max(result, kill)); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /2주차/11866/java_11866_루나.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.ArrayList; 5 | import java.util.LinkedList; 6 | import java.util.List; 7 | import java.util.Queue; 8 | 9 | class Main { 10 | public static void main(String[] args) throws IOException { 11 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 12 | 13 | String[] input = br.readLine().split(" "); 14 | int N = Integer.parseInt(input[0]); 15 | int K = Integer.parseInt(input[1]); 16 | int cnt = 1; 17 | 18 | List result = new ArrayList<>(); 19 | 20 | Queue q = new LinkedList<>(); 21 | for (int i = 1; i <= N; i++) { 22 | q.add(i); 23 | } 24 | 25 | while (!q.isEmpty()) { 26 | if (cnt == K) { 27 | result.add(q.poll().toString()); 28 | cnt = 1; 29 | } else { 30 | cnt++; 31 | q.add(q.poll()); 32 | } 33 | } 34 | System.out.println("<" + String.join(", ", result) + ">"); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /3주차/13702/13702_cpp_케이: -------------------------------------------------------------------------------- 1 | #include 2 | #define sz(v) (int)v.size() 3 | #define int long long 4 | #define all(v) (v).begin(), (v).end() 5 | #define press(v) (v).erase(unique(all(v)), (v).end()) 6 | using namespace std; 7 | typedef pair pi; 8 | typedef pair pii; 9 | const int MAX = 1e4+7; 10 | const int INF = 0x3f3f3f3f3f3f3f3f; 11 | const int MOD = 1e9 + 7; 12 | int N,K,a[MAX],s=1,e; 13 | int solve(int s,int e){ 14 | int ret=0; 15 | while(s<=e){ 16 | int mid=(s+e)/2,cnt=0; 17 | for (int i = 0; i < N; i++) { 18 | cnt+=a[i]/mid; 19 | } 20 | if(cntsync_with_stdio(0); 32 | cin>>N>>K; 33 | for (int i = 0; i < N; i++) { 34 | cin>>a[i]; 35 | e=max(e,a[i]); 36 | } 37 | cout< peoples = new ArrayList<>(); 27 | 28 | for (int i = 0; i < n; i++) { 29 | int age = s.nextInt(); 30 | String name = s.next(); 31 | 32 | peoples.add(new People(age, name)); 33 | } 34 | 35 | peoples.sort(Comparator.comparingInt(a -> a.age)); 36 | 37 | peoples.forEach(people -> System.out.println(people.age + " " + people.name)); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /1주차/14659/14659_java_포키.java: -------------------------------------------------------------------------------- 1 | import java.util.Arrays; 2 | import java.util.List; 3 | import java.util.Scanner; 4 | import java.util.stream.Collectors; 5 | 6 | public class Main { 7 | 8 | public static void main(String[] args) { 9 | Scanner scanner = new Scanner(System.in); 10 | int count = scanner.nextInt(); 11 | scanner.nextLine(); 12 | List peeks = Arrays.stream(scanner.nextLine().split(" ")) 13 | .map(Integer::parseInt) 14 | .collect(Collectors.toList()); 15 | 16 | int maxKill = 0; 17 | for (int i = 0; i < count; i++) { 18 | int kill = 0; 19 | for (int j = i + 1; j < count; j++) { 20 | if (peeks.get(i) < peeks.get(j)) { 21 | break; 22 | } 23 | kill++; 24 | } 25 | if (maxKill < kill) { 26 | maxKill = kill; 27 | } 28 | } 29 | System.out.println(maxKill); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /2주차/23827/java_23827_유콩.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.ArrayList; 5 | import java.util.List; 6 | import java.util.StringTokenizer; 7 | 8 | public class Main { 9 | public static void main(String[] args) throws IOException { 10 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | br.readLine(); 12 | StringTokenizer st = new StringTokenizer(br.readLine()); 13 | 14 | List numbers = new ArrayList<>(); 15 | while (st.hasMoreTokens()) { 16 | numbers.add(Long.valueOf(st.nextToken())); 17 | } 18 | 19 | long sum = numbers.stream().mapToLong(i -> i).sum(); 20 | long total = 0; 21 | for (int i = 0; i < numbers.size() - 1; i++) { 22 | sum -= numbers.get(i); 23 | total = (total + numbers.get(i) * sum) % 1_000_000_007; 24 | } 25 | 26 | System.out.println(total); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /3주차/1254/Kun_1254.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | 5 | public class Kun_1254 { 6 | public static void main(String[] args) throws IOException { 7 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 8 | String input = br.readLine(); 9 | 10 | int length = input.length(); 11 | for (int i = 0; i < length; i++) { 12 | if (isPalind(input.substring(i))) { 13 | break; 14 | } 15 | length++; 16 | } 17 | System.out.println(length); 18 | } 19 | 20 | public static boolean isPalind(String input) { 21 | int start = 0; 22 | int last = input.length() - 1; 23 | 24 | while (start <= last) { 25 | if (input.charAt(start) != input.charAt(last)) { 26 | return false; 27 | } 28 | start++; 29 | last--; 30 | } 31 | return true; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /2주차/23827/23827_java_매트.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | import java.util.List; 3 | import java.util.Scanner; 4 | 5 | public class Main { 6 | 7 | private static final int MOD = 1_000_000_007; 8 | 9 | public static void main(String[] args) { 10 | Scanner scanner = new Scanner(System.in); 11 | 12 | int n = scanner.nextInt(); 13 | 14 | List numbers = new ArrayList<>(); 15 | long totalNumber = 0; 16 | for (int i = 0; i < n; i++) { 17 | int number = scanner.nextInt(); 18 | numbers.add(number); 19 | totalNumber += number; 20 | } 21 | 22 | long sum = 0; 23 | for (int i = 0; i < n - 1; i++) { 24 | int number = numbers.get(i); 25 | totalNumber -= number; 26 | // 모든 정수쌍의 합을 MOD로 나눠야 한다. 27 | // 즉 일반화한 정수쌍들의 합을 MOD로 나누게 되면 총 합을 MOD로 나눈 것과 같다. 28 | sum = (sum + number * totalNumber) % MOD; 29 | } 30 | 31 | System.out.println(sum); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /1주차/17362/17362_java_라쿤.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.InputStreamReader; 3 | 4 | 5 | public class Main { 6 | 7 | static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 8 | 9 | public static String input() { 10 | try { 11 | return br.readLine().trim(); 12 | } catch (Exception e) {} 13 | return null; 14 | } 15 | 16 | public static void main(String[] args) { 17 | int n = Integer.parseInt(input()); 18 | int finger = n % 8; 19 | 20 | if (finger == 1) { 21 | System.out.println(1); 22 | } 23 | if (finger == 2 || finger == 0) { 24 | System.out.println(2); 25 | } 26 | if (finger == 3 || finger == 7) { 27 | System.out.println(3); 28 | } 29 | if (finger == 4 || finger == 6) { 30 | System.out.println(4); 31 | } 32 | if (finger == 5) { 33 | System.out.println(5); 34 | } 35 | 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /2주차/2121/2121_정.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | N = int(input()) 6 | A, B = map(int, input().split()) 7 | 8 | dot_map = {} 9 | 10 | for _ in range(N): 11 | (left_x, bottom_y) = map(int, input().split()) 12 | right_x = left_x + A 13 | top_y = bottom_y + B 14 | 15 | if (left_x, bottom_y) not in dot_map: 16 | dot_map[(left_x, bottom_y)] = 1 17 | else: 18 | dot_map[(left_x, bottom_y)] += 1 19 | 20 | if (right_x, bottom_y) not in dot_map: 21 | dot_map[(right_x, bottom_y)] = 1 22 | else: 23 | dot_map[(right_x, bottom_y)] += 1 24 | 25 | if (left_x, top_y) not in dot_map: 26 | dot_map[(left_x, top_y)] = 1 27 | else: 28 | dot_map[(left_x, top_y)] += 1 29 | 30 | if (right_x, top_y) not in dot_map: 31 | dot_map[(right_x, top_y)] = 1 32 | else: 33 | dot_map[(right_x, top_y)] += 1 34 | 35 | answer = 0 36 | for dot_count in dot_map.values(): 37 | if dot_count == 4: 38 | answer += 1 39 | 40 | print(answer) 41 | -------------------------------------------------------------------------------- /2주차/23827/23827_java_윤주리.java: -------------------------------------------------------------------------------- 1 | package PS; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | import java.util.Arrays; 7 | import java.util.StringTokenizer; 8 | 9 | public class Sequence { 10 | 11 | //전체 합에서 해당 배열 값을 빼주고 곱한 것을 sum 12 | 13 | public static void main(String[] args) throws IOException { 14 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 15 | 16 | int n = Integer.parseInt(br.readLine()); 17 | int[] arr = new int[n]; 18 | 19 | StringTokenizer st = new StringTokenizer(br.readLine()); 20 | for (int i = 0; i < n; i++) { 21 | arr[i] = Integer.parseInt(st.nextToken()); 22 | } 23 | long arrSum = Arrays.stream(arr).sum(); 24 | 25 | int sum = 0; 26 | for (int i = 0; i < n; i++) { 27 | arrSum -= arr[i]; 28 | sum += arr[i] * (arrSum); 29 | sum %= 1000000007; 30 | } 31 | System.out.println(sum); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /4주차/18232/18232_python_quaritch.py: -------------------------------------------------------------------------------- 1 | # 18232번 2 | # 텔레포트 정거장 3 | 4 | from collections import deque 5 | import sys 6 | 7 | readline = sys.stdin.readline 8 | 9 | 10 | def bfs(start): 11 | q = deque() 12 | q.append(start) 13 | visited[start] = 1 14 | while q: 15 | x = q.popleft() 16 | 17 | dx = [x + 1, x - 1] 18 | 19 | if teleports[x]: 20 | dx += teleports[x] 21 | 22 | for nx in dx: 23 | if 0 < nx <= N and visited[nx] == 0: # 범위 내 이면서 방문하지 않았을 경우 24 | visited[nx] = visited[x] + 1 # 방문 처리 겸 초 계산 25 | q.append(nx) 26 | if x == E: # 목표점에 도달했을 경우 27 | return visited[x] - 1 28 | 29 | 30 | N, M = map(int, readline().rstrip().split()) 31 | S, E = map(int, readline().rstrip().split()) 32 | teleports = [[] for _ in range(N + 1)] 33 | visited = [0] * (N + 1) 34 | for _ in range(M): 35 | a, b = map(int, readline().rstrip().split()) 36 | teleports[a].append(b) 37 | teleports[b].append(a) 38 | 39 | print(bfs(S)) 40 | -------------------------------------------------------------------------------- /1주차/14659/14659_Java_짱구.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.Arrays; 5 | 6 | public class Main { 7 | 8 | public static void main(String[] args) throws IOException { 9 | 10 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | int n = Integer.parseInt(br.readLine()); 12 | int[] arr = Arrays.stream(br.readLine() 13 | .split(" ")) 14 | .mapToInt(Integer::parseInt) 15 | .toArray(); 16 | 17 | int result = 0; 18 | int num = arr[0]; 19 | int count = 0; 20 | 21 | for (int i = 1; i < n; i++) { 22 | if (num < arr[i]) { 23 | result = Math.max(result, count); 24 | num = arr[i]; 25 | count = 0; 26 | continue; 27 | } 28 | count++; 29 | } 30 | 31 | result = Math.max(result, count); 32 | System.out.println(result); 33 | } 34 | } -------------------------------------------------------------------------------- /2주차/23827/23827_java_포키.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.StringTokenizer; 5 | 6 | public class Main { 7 | 8 | public static void main(String[] args) throws IOException { 9 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 10 | int length = Integer.parseInt(br.readLine()); 11 | 12 | StringTokenizer st = new StringTokenizer(br.readLine()); 13 | int[] numbers = new int[length]; 14 | long total = 0; 15 | for (int i = 0; i < length; i++) { 16 | int number = Integer.parseInt(st.nextToken()); 17 | numbers[i] = number; 18 | total += number; 19 | } 20 | 21 | long result = 0; 22 | for (int number : numbers) { 23 | total -= number; 24 | result += number * total; 25 | result %= 1_000_000_007; //이거 왜 들어가야 하는지 모르겠어요.. 26 | } 27 | 28 | System.out.println(result); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /2주차/11866/11866_cpp_케이.cpp: -------------------------------------------------------------------------------- 1 | // 요세푸스 문제 0 2 | // queue 3 | #include 4 | #define sz(v) (int)v.size() 5 | #define int long long 6 | #define all(v) (v).begin(), (v).end() 7 | #define press(v) (v).erase(unique(all(v)), (v).end()) 8 | using namespace std; 9 | typedef pair pi; 10 | typedef pair pii; 11 | const int MAX = 1e3+7; 12 | const int INF = 0x3f3f3f3f3f3f3f3f; 13 | const int MOD = 1e9 + 7; 14 | int N,K; 15 | queue q; 16 | int32_t main() { 17 | cin.tie(0)->sync_with_stdio(0); 18 | cin>>N>>K; 19 | for (int i = 1; i <= N; i++) { 20 | q.push(i); 21 | } 22 | cout<<"<"; 23 | while(!q.empty()) { 24 | // queue를 이용한 O(NK) 25 | for (int i = 0; i < K-1; i++) { 26 | int k=q.front(); 27 | // front를 pop해주고, 다시 맨 뒤에 넣어줌. 28 | q.pop(); 29 | q.push(k); 30 | } 31 | // 맨 마지막 원소는 ", " 적용 X 32 | cout<"; 37 | } -------------------------------------------------------------------------------- /6주차/14657/14657_python_yaho.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from math import ceil 3 | 4 | input = sys.stdin.readline 5 | 6 | 7 | def dfs(now, cnt): 8 | global dist, endpoint, min_t 9 | 10 | if dist < cnt: 11 | dist = cnt 12 | endpoint = now 13 | min_t = visited[now] 14 | elif dist == cnt and visited[now] < min_t: 15 | endpoint = now 16 | min_t = visited[now] 17 | 18 | for nxt, time in graph[now]: 19 | if visited[nxt] == -1: 20 | visited[nxt] = visited[now] + time 21 | dfs(nxt, cnt + 1) 22 | 23 | 24 | N, T = map(int, input().split()) 25 | graph = [[] for _ in range(N)] 26 | for _ in range(N - 1): 27 | A, B, C = map(int, input().split()) 28 | A -= 1 29 | B -= 1 30 | graph[A].append((B, C)) 31 | graph[B].append((A, C)) 32 | 33 | dist, endpoint, min_t = 0, 0, int(1e9) 34 | visited = [-1] * N 35 | visited[0] = 0 36 | dfs(0, 1) 37 | 38 | visited = [-1] * N 39 | dist, min_t = 0, int(1e9) 40 | visited[endpoint] = 0 41 | dfs(endpoint, 1) 42 | print(ceil(min_t / T)) 43 | -------------------------------------------------------------------------------- /1주차/4796/4796_java_라라.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | import java.util.List; 3 | import java.util.Scanner; 4 | 5 | public class BOJ_4796 { 6 | 7 | private static Scanner sc = new Scanner(System.in); 8 | 9 | public static void main(String[] args) { 10 | List answers = new ArrayList<>(); 11 | 12 | while (true) { 13 | if (!addAnswer(answers)) { 14 | break; 15 | } 16 | } 17 | 18 | for (int i = 0; i < answers.size(); i++) { 19 | System.out.println("Case " + (i + 1) + ": " + answers.get(i)); 20 | } 21 | } 22 | 23 | private static boolean addAnswer(final List answers) { 24 | int L = sc.nextInt(); 25 | int P = sc.nextInt(); 26 | int V = sc.nextInt(); 27 | 28 | if (L == 0 && P == 0 && V == 0) { 29 | return false; 30 | } 31 | 32 | int answer = V / P * L; 33 | answer += (Math.min(V % P, L)); 34 | answers.add(answer); 35 | 36 | return true; 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /1주차/14659/14659_java_매트.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | import java.util.List; 3 | import java.util.Scanner; 4 | 5 | public class Main { 6 | 7 | public static void main(String[] args) { 8 | Scanner scanner = new Scanner(System.in); 9 | 10 | int n = scanner.nextInt(); 11 | 12 | List numbers = new ArrayList<>(); 13 | for (int i = 0; i < n; i++) { 14 | numbers.add(scanner.nextInt()); 15 | } 16 | 17 | int maxMountaintop = numbers.get(0); 18 | int killCount = 0; 19 | int killMax = Integer.MIN_VALUE; 20 | for (int i = 1; i < numbers.size(); i++) { 21 | if (maxMountaintop < numbers.get(i)) { 22 | maxMountaintop = numbers.get(i); 23 | killMax = Math.max(killCount, killMax); 24 | killCount = 0; 25 | continue; 26 | } 27 | 28 | killCount++; 29 | killMax = Math.max(killCount, killMax); 30 | } 31 | 32 | System.out.println(killMax); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /2주차/2121/2121_java_필즈_test.java: -------------------------------------------------------------------------------- 1 | package study.coding.test.backjoon.week_2; 2 | 3 | import static java.lang.System.out; 4 | import static org.assertj.core.api.Assertions.assertThat; 5 | import static org.junit.jupiter.api.Assertions.*; 6 | 7 | import java.io.IOException; 8 | import java.io.StringReader; 9 | import org.junit.jupiter.api.DisplayName; 10 | import org.junit.jupiter.api.Test; 11 | 12 | class Sol_2_2121_5Test { 13 | 14 | @DisplayName("test") 15 | @Test 16 | void test_() throws IOException { 17 | String input = 18 | "6\n" 19 | + "2 3\n" 20 | + "0 0\n" 21 | + "2 0\n" 22 | + "2 3\n" 23 | + "0 3\n" 24 | + "4 0\n" 25 | + "4 3"; 26 | 27 | StringReader reader = new StringReader(input); 28 | String output = Sol_2_2121_5.solve(reader); 29 | 30 | out.println("output = " + output); 31 | assertThat(output).isEqualTo("2"); 32 | } 33 | } -------------------------------------------------------------------------------- /4주차/16198/16198_java_라라.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | import java.util.List; 3 | import java.util.Scanner; 4 | 5 | public class Main { 6 | static List numbers = new ArrayList<>(); 7 | static int max = 0; 8 | static int n; 9 | 10 | public static void main(String[] args) { 11 | Scanner sc = new Scanner(System.in); 12 | n = sc.nextInt(); 13 | for (int i = 0; i < n; i++) { 14 | numbers.add(sc.nextInt()); 15 | } 16 | 17 | dfs(0); 18 | 19 | System.out.println(max); 20 | } 21 | 22 | private static void dfs(int sum) { 23 | if (numbers.size() == 2) { 24 | if (sum > max) { 25 | max = sum; 26 | } 27 | } 28 | 29 | for (int i = 1; i < numbers.size() - 1; i++) { 30 | int number = numbers.get(i); 31 | int energy = numbers.get(i - 1) * numbers.get(i + 1); 32 | numbers.remove(i); 33 | dfs(sum + energy); 34 | numbers.add(i, number); 35 | } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /4주차/16198/16198_java_매트.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | import java.util.List; 3 | import java.util.Scanner; 4 | 5 | public class Main { 6 | 7 | private static int power; 8 | 9 | public static void main(String[] args) { 10 | Scanner scanner = new Scanner(System.in); 11 | 12 | int n = scanner.nextInt(); 13 | 14 | List marbles = new ArrayList<>(); 15 | for (int i = 0; i < n; i++) { 16 | marbles.add(scanner.nextInt()); 17 | } 18 | 19 | dfs(n, marbles, 0); 20 | System.out.println(power); 21 | } 22 | 23 | private static void dfs(int n, List marbles, int sum) { 24 | if (n == 2) { 25 | power = Math.max(power, sum); 26 | return; 27 | } 28 | 29 | for (int i = 1; i < marbles.size() - 1; i++) { 30 | int s = marbles.get(i - 1) * marbles.get(i + 1); 31 | int marble = marbles.remove(i); 32 | dfs(n - 1, marbles, sum + s); 33 | marbles.add(i, marble); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /1주차/14659/java_14659_루나.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.Arrays; 5 | 6 | public class Main { 7 | public static void main(String[] args) throws IOException { 8 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | int N = Integer.parseInt(br.readLine()); 10 | int result = 0; 11 | 12 | int[] archers = Arrays.stream(br.readLine().split(" ")) 13 | .mapToInt(Integer::parseInt) 14 | .toArray(); 15 | int archer = archers[0]; 16 | int killedEnemy = 0; 17 | 18 | for (int i = 1; i < N; i++) { 19 | int curArcher = archers[i]; 20 | if (curArcher < archer) { 21 | killedEnemy++; 22 | } else { 23 | result = Math.max(result, killedEnemy); 24 | killedEnemy = 0; 25 | archer = curArcher; 26 | } 27 | } 28 | System.out.println(Math.max(result, killedEnemy)); 29 | } 30 | } -------------------------------------------------------------------------------- /2주차/2121/2121_python_토르.py: -------------------------------------------------------------------------------- 1 | from collections import deque 2 | 3 | N = int(input()) 4 | A, B = map(int, input().split()) # 가로 길이, 세로 길이 5 | coordinates = set() 6 | 7 | for _ in range(N): 8 | x, y = map(int, input().split()) 9 | coordinates.add((x, y)) 10 | 11 | answer = 0 12 | 13 | for coordinate in coordinates: 14 | saved_x, saved_y = coordinate 15 | 16 | if (saved_x - A, saved_y) in coordinates and (saved_x, saved_y - B) in coordinates and (saved_x - A, saved_y - B) in coordinates: 17 | answer += 1 18 | if (saved_x + A, saved_y) in coordinates and (saved_x, saved_y - B) in coordinates and (saved_x + A, saved_y - B) in coordinates: 19 | answer += 1 20 | if (saved_x + A, saved_y) in coordinates and (saved_x, saved_y + B) in coordinates and (saved_x + A, saved_y + B) in coordinates: 21 | answer += 1 22 | if (saved_x - A, saved_y) in coordinates and (saved_x - A, saved_y + B) in coordinates and (saved_x, saved_y + B) in coordinates: 23 | answer += 1 24 | 25 | print(answer // 4) # 사각형이 만들어진다면 사각형의 각 꼭지점에서 다 answer를 올렸기 때문에 나눠줍니다. -------------------------------------------------------------------------------- /4주차/21938/21938_python_제로.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from collections import deque 3 | input = sys.stdin.readline 4 | 5 | n, m = map(int, input().split()) 6 | lst = [] 7 | # rgb 평균값으로 저장 8 | for _ in range(n): 9 | tempLst = list(map(int, input().split())) 10 | rgbLst = [] 11 | for i in range(0, m*3, 3): 12 | rgbLst.append(sum(tempLst[i:i+3])/3) 13 | lst.append(rgbLst) 14 | t = int(input()) 15 | 16 | dx = [0, 0, 1, -1] 17 | dy = [-1, 1, 0, 0] 18 | def bfs(i, j): 19 | q = deque() 20 | q.append((i, j)) 21 | while q: 22 | new_i, new_j = q.popleft() 23 | for index in range(4): 24 | ni = dx[index] + new_i 25 | nj = dy[index] + new_j 26 | if not (0 <= ni < n and 0 <= nj < m): 27 | continue 28 | if lst[ni][nj] >= t: 29 | q.append((ni, nj)) 30 | lst[ni][nj] = -1 31 | count = 0 32 | for i in range(n): 33 | for j in range(m): 34 | if lst[i][j] >= t: 35 | count += 1 36 | lst[i][j] = -1 37 | bfs(i, j) 38 | print(count) -------------------------------------------------------------------------------- /1주차/10814/10814_cpp_케이.cpp: -------------------------------------------------------------------------------- 1 | // 220629 #10814 나이 순 정렬 2 | // sorting 3 | #include 4 | #define sz(v) (int)v.size() 5 | #define all(v) (v).begin(), (v).end() 6 | #define press(v) (v).erase(unique(all(v)), (v).end()) 7 | using namespace std; 8 | typedef long long ll; 9 | typedef pair pi; 10 | typedef pair pii; 11 | typedef pair pl; 12 | const int MAX = 53; 13 | const int INF = 0x3f3f3f3f; 14 | const ll LNF = 0x3f3f3f3f3f3f3f3f; 15 | const int MOD = 1e9 + 7; 16 | int N; 17 | vector>> v; 18 | // sorting settings 19 | bool cmp(pair> p1, pair> p2) { 20 | if(p1.first==p2.first)return p1.second.secondsync_with_stdio(0); 25 | cin>>N; 26 | v.resize(N); 27 | for (int i = 0; i < N; i++) { 28 | cin>>v[i].first>>v[i].second.first; 29 | v[i].second.second=i; 30 | } 31 | // sort 32 | sort(all(v),cmp); 33 | for(auto i:v)cout< num) { 24 | curNum++; 25 | result = Math.max(result, curNum); 26 | } else { 27 | curPick = num; 28 | curNum = 0; 29 | } 30 | } 31 | 32 | System.out.println(result); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /3주차/13702/13702_java_매트.java: -------------------------------------------------------------------------------- 1 | package me.hyeonic.algorithm.kstudy.week3; 2 | 3 | import java.util.ArrayList; 4 | import java.util.List; 5 | import java.util.Scanner; 6 | 7 | public class Main { 8 | 9 | public static void main(String[] args) { 10 | Scanner scanner = new Scanner(System.in); 11 | 12 | int n = scanner.nextInt(); 13 | int k = scanner.nextInt(); 14 | 15 | List alcohols = new ArrayList<>(); 16 | 17 | for (int i = 0; i < n; i++) { 18 | alcohols.add(scanner.nextInt()); 19 | } 20 | 21 | long start = 1; 22 | long end = Integer.MAX_VALUE; 23 | 24 | while (start <= end) { 25 | long mid = (start + end) / 2; 26 | int count = 0; 27 | 28 | for (Integer alcohol : alcohols) { 29 | count += alcohol / mid; 30 | } 31 | 32 | if (count >= k) { 33 | start = mid + 1; 34 | } else { 35 | end = mid - 1; 36 | } 37 | } 38 | 39 | System.out.println(end); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /6주차/24393/24393_cpp_K.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #define sz(v) (int)v.size() 3 | #define int long long 4 | #define all(v) (v).begin(), (v).end() 5 | #define press(v) (v).erase(unique(all(v)), (v).end()) 6 | using namespace std; 7 | typedef pair pi; 8 | typedef pair pii; 9 | const int MAX = 2e5+7; 10 | const int INF = 0x3f3f3f3f3f3f3f3f; 11 | const int MOD = 1e9 + 7; 12 | int t,N,K,ans=1; 13 | int32_t main() { 14 | cin.tie(0)->sync_with_stdio(0); 15 | cin>>t; 16 | while(t--){ 17 | int l=0,r=0; 18 | bool flag=false; 19 | for (int i = 1,j=0; j<27; i++) { 20 | int k;cin>>k; 21 | j+=k; 22 | if(i%2==0){ 23 | l+=k; 24 | }else{ 25 | r+=k; 26 | } 27 | if(!flag&&i%2==0&&ans<=13&&l>=ans){ 28 | ans=r+ans; 29 | flag=true; 30 | } 31 | else if(!flag&&i%2&&ans>13&&r>=ans-13){ 32 | ans=ans-13+l; 33 | flag=true; 34 | } 35 | } 36 | } 37 | cout<= T else 0 for j in range(0, len(raw_line), 3)] for raw_line in raw_rgb] 32 | 33 | ans = 0 34 | 35 | for i in range(N): 36 | for j in range(M): 37 | if rgb[i][j] == 1: 38 | bfs(i, j) 39 | ans += 1 40 | 41 | print(ans) 42 | -------------------------------------------------------------------------------- /6주차/14938/14938-python-leo.py: -------------------------------------------------------------------------------- 1 | import sys 2 | 3 | input = sys.stdin.readline 4 | 5 | 6 | def solution(n, m, r, items_count): 7 | distances = [[sys.maxsize] * n for _ in range(n)] 8 | for _ in range(r): 9 | a, b, length = map(int, input().split()) 10 | distances[a - 1][b - 1] = min(distances[a - 1][b - 1], length) 11 | distances[b - 1][a - 1] = min(distances[b - 1][a - 1], length) 12 | 13 | for c in range(n): 14 | for a in range(n): 15 | for b in range(n): 16 | if a == b: 17 | distances[a][b] = 0 18 | else: 19 | distances[a][b] = min(distances[a][b], distances[a][c] + distances[c][b]) 20 | answer = 0 21 | for a in range(n): 22 | current = 0 23 | for b in range(n): 24 | if distances[a][b] <= m: 25 | current += items_count[b] 26 | answer = max(answer, current) 27 | return answer 28 | 29 | 30 | n, m, r = map(int, input().split()) 31 | items_count = list(map(int, input().split())) 32 | print(solution(n, m, r, items_count)) 33 | -------------------------------------------------------------------------------- /1주차/4796/Java_4796_토닉.java: -------------------------------------------------------------------------------- 1 | import java.util.ArrayList; 2 | import java.util.List; 3 | import java.util.Scanner; 4 | 5 | class Main { 6 | public static void main(String[] args) { 7 | Scanner scanner = new Scanner(System.in); 8 | int count = 0; 9 | List results = new ArrayList<>(); 10 | while (true) { 11 | String input = scanner.nextLine(); 12 | String[] LPV = input.split(" "); 13 | Integer L = Integer.parseInt(LPV[0]); 14 | Integer P = Integer.parseInt(LPV[1]); 15 | Integer V = Integer.parseInt(LPV[2]); 16 | if (L == 0 && P == 0 && V == 0) { 17 | break; 18 | } 19 | Integer result = (V/P)*L; 20 | if (V % P > L) { 21 | result += L; 22 | } else { 23 | result += V % P; 24 | } 25 | results.add(result); 26 | } 27 | for (Integer result : results) { 28 | count += 1; 29 | System.out.printf("Case %d: %d%n", count, result); 30 | } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /3주차/11568/11568_java_짱구.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.StringTokenizer; 5 | 6 | public class Main { 7 | 8 | public static void main(String[] args) throws IOException { 9 | 10 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | int n = Integer.parseInt(br.readLine()); 12 | int[] arr = new int[n]; 13 | StringTokenizer st = new StringTokenizer(br.readLine()); 14 | 15 | for (int i = 0; i < n; i++) { 16 | arr[i] = Integer.parseInt(st.nextToken()); 17 | } 18 | 19 | int[] dp = new int[n]; 20 | 21 | for (int i = 0; i < n; i++) { 22 | for (int j = 0; j < i; j++) { 23 | if (arr[i] > arr[j]) { 24 | dp[i] = Math.max(dp[i], dp[j] + 1); 25 | } 26 | } 27 | } 28 | 29 | int max = 0; 30 | for (int i = 0; i < n; i++) { 31 | max = Math.max(max, dp[i]); 32 | } 33 | System.out.println(max + 1); 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /1주차/17362/17362_Java_레넌.java: -------------------------------------------------------------------------------- 1 | package boj.p17362; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.BufferedWriter; 5 | import java.io.IOException; 6 | import java.io.InputStreamReader; 7 | import java.io.OutputStreamWriter; 8 | 9 | public class Main { 10 | 11 | public static void main(String[] args) throws IOException { 12 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 13 | BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); 14 | 15 | int number = Integer.parseInt(br.readLine()); 16 | 17 | bw.write(calculate(number)+""); 18 | bw.flush(); 19 | 20 | br.close(); 21 | bw.close(); 22 | } 23 | 24 | private static int calculate(int n) { 25 | if (n % 8 == 1) { 26 | return 1; 27 | } 28 | if (n % 8 == 0 || n % 8 == 2) { 29 | return 2; 30 | } 31 | if (n % 8 == 3 || n % 8 == 7) { 32 | return 3; 33 | } 34 | if (n % 8 == 4 || n % 8 == 6) { 35 | return 4; 36 | } 37 | return 5; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /2주차/11866/11866_java_디우.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.LinkedList; 5 | import java.util.List; 6 | import java.util.Queue; 7 | 8 | class Main11866 { 9 | 10 | final static BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 11 | 12 | public static void main(String[] args) throws IOException { 13 | final String[] inputs = reader.readLine().split(" "); 14 | 15 | Queue queue = new LinkedList<>(); 16 | 17 | for (int i = 1; i <= Integer.parseInt(inputs[0]); i++) { 18 | queue.add(i); 19 | } 20 | 21 | int count = Integer.parseInt(inputs[1]); 22 | 23 | System.out.print("<"); 24 | 25 | while(queue.size() > 1) { 26 | for (int i = 0; i < count - 1; i++) { 27 | final Integer buffer = queue.poll(); 28 | queue.add(buffer); 29 | } 30 | 31 | System.out.print(queue.poll() + ", "); 32 | } 33 | 34 | System.out.print(queue.poll() + ">"); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /1주차/14659/Kun_14659.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.util.StringTokenizer; 5 | 6 | public class Kun_14659 { 7 | public static void main(String[] args) throws IOException { 8 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 9 | int number = Integer.parseInt(br.readLine()); 10 | StringTokenizer st = new StringTokenizer(br.readLine()); 11 | 12 | int[] ar = new int[number]; 13 | for (int i = 0; i < number; i++) { 14 | ar[i] = Integer.parseInt(st.nextToken()); 15 | } 16 | 17 | int maxCount = 0; 18 | for (int i = 0; i < ar.length - 1; i++) { 19 | int count = 0; 20 | for (int j = i + 1; j < ar.length; j++) { 21 | if (ar[i] < ar[j]) { 22 | break; 23 | } 24 | count++; 25 | } 26 | if (maxCount < count) { 27 | maxCount = count; 28 | } 29 | } 30 | 31 | System.out.println(maxCount); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /2주차/23827/java_23827_아리.java: -------------------------------------------------------------------------------- 1 | import java.io.BufferedReader; 2 | import java.io.IOException; 3 | import java.io.InputStreamReader; 4 | import java.math.BigInteger; 5 | import java.util.StringTokenizer; 6 | 7 | public class Main { 8 | 9 | public static void main(String[] args) throws IOException { 10 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 11 | int count = Integer.parseInt(br.readLine()); 12 | 13 | StringTokenizer st = new StringTokenizer(br.readLine()); 14 | BigInteger[] input = new BigInteger[count]; 15 | BigInteger total = new BigInteger("0"); // 전체합 16 | 17 | for (int i = 0; i < count; i++) { 18 | input[i] = new BigInteger(st.nextToken()); 19 | total = total.add(input[i]); 20 | } 21 | 22 | BigInteger result = new BigInteger("0"); 23 | 24 | for (int i = 0; i < count; i++) { 25 | total = total.subtract(input[i]); 26 | result = result.add(input[i].multiply(total)); 27 | } 28 | 29 | System.out.println(result.remainder(new BigInteger("1000000007"))); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /2주차/11866/java_11866_panda.java: -------------------------------------------------------------------------------- 1 | package algorithm_study.week2; 2 | 3 | import java.io.BufferedReader; 4 | import java.io.IOException; 5 | import java.io.InputStreamReader; 6 | import java.util.ArrayList; 7 | import java.util.List; 8 | import java.util.StringTokenizer; 9 | 10 | public class java_11866_panda { 11 | public static void main(String[] args) throws IOException { 12 | BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 13 | StringTokenizer st = new StringTokenizer(br.readLine()); 14 | int N = Integer.parseInt(st.nextToken()); 15 | int K = Integer.parseInt(st.nextToken()); 16 | 17 | List numbers = new ArrayList<>(); 18 | for (int i = 1; i <= N; i++) { 19 | numbers.add(i); 20 | } 21 | 22 | StringBuilder sb = new StringBuilder("<"); 23 | int pivot = 0; 24 | while (!numbers.isEmpty()) { 25 | pivot = (pivot - 1 + K) % numbers.size(); 26 | sb.append(numbers.remove(pivot)).append(", "); 27 | } 28 | System.out.println(sb.substring(0, sb.length() - 2) + ">"); 29 | } 30 | } 31 | 32 | --------------------------------------------------------------------------------