본문 바로가기

전체 글45

[BOJ] [JAVA] 7785번 회사에 있는 사람 7785번: 회사에 있는 사람 첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는 www.acmicpc.net HashMap에 이어 TreeMap도 바로 배웠다! 이 문제는 사람 이름이 key, 출근 여부가 value로 부여되는데, 사람 이름의 사전 역순으로 정렬하여 출력해야 하기 때문에 TreeMap을 이용했다. TreeMap은 key값을 정렬하는 것이 가능하다. 대신 시간이 느리다고 한다. import java.util.*; import java.io.*; public class Main { public static void m.. 2024. 1. 6.
[BOJ] [JAVA] 18870번 좌표 압축 18870번: 좌표 압축 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표 Xj의 개수와 같아야 한다. X1, X2, ..., XN에 www.acmicpc.net 좌표 압축 문제,,, 주어지는 배열에 대해서 각 배열의 원소를 배열 내의 ranking으로 바꿔서 출력하는 문제이다,,, 처음 생각한 방식은 배열을 입력받고,,, 배열을 set로 다시 받아서 중복 없애고,,, 다시 배열로 변환해서 오름차순 정렬하고,,, 원래 배열에서 for문 돌려서 set애서 변환된 배열에서 원소를 찾아서 index를 뽑아내는 방식이었는데 시간초과됐다,,, 답은 HashMap을 사용하는 거였다!.. 2024. 1. 6.
[BOJ] [JAVA] 10815번 숫자 카드 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 이진 탐색을 이용한 문제였다. 이진 탐색을 말로만 들었지 써본 건 처음이라 살짝 헷갈렸따! 신기해서 올려봤다. import java.util.*; import java.io.*; public class Main { static int [] card; public static void main(String [] args) throws IOException { BufferedReader br = new BufferedReader(new .. 2024. 1. 6.
[Python] [3] 텍스트 파일(끝말잇기 게임) 1. 끝말잇기 텍스트 파일을 다루는 방법을 배워봤다. txt 파일을 파이썬 파일과 같은 곳에 두면 텍스트 파일의 내용을 사용할 수 있다! # 끝말잇기 게임 import random words = open('korean_words.txt', encoding='utf-8').read().split() # txt 파일에는 1805개의 단어가 들어있다 def isOkay(word): # 두음 법칙을 고려(?)했다 s1 = '냥녀뇨니라락란래량려렷로론뢰료루류륜리' s2 = '양여요이나낙난내양여엿노논뇌요누유윤이' tt = str.maketrans(s1, s2) return word[-1:].translate(tt) def game(): start = random.choice(words) # 상대가 먼저 시작 word.. 2023. 12. 29.
[Programmers][Python] 소수 찾기 1. 시간 초과 n 이하의 소수 개수를 찾는 문제이다. n이 1000000 이하의 자연수라 처음 한 방법은 시간초과가 났다. list를 계속 만들어서 그런가? def solution(n): prime = list(range(2, n + 1)) for i in range(2, n + 1): if i in prime: prime = list(filter(lambda x : x % i != 0 or x == i, prime)) return len(prime) # 시간 초과 2. 정답 bool list를 만들고 에라토스테네스의 체를 이용하여 풀었다. prime의 i번째 원소가 수 i이고, prime[i]가 true이면 i는 소수이다. 만약 i가 소수라면 j = 2 * i, 3 * i, 4* i ..... 2023. 12. 29.