일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 비연결형 통신
- 욱제는 효도쟁이야!!
- 컴퓨터 네트워크
- 구현
- 세탁소 사장 동혁
- 시저 암호화
- 문자 변환표
- 그리디 알고리즘
- 컬럼 암호화
- 5와 6의 차이
- JoCoding
- 전자 메일
- 대체 암호화
- 소가 길을 건너간 이유3
- 나동빈
- 통나무 건너기
- 2 + 1 세일
- Pop
- 키워드 암호화
- 백준
- 파이썬
- 한빛미디어
- DES 알고리즘
- 코딩 테스트
- 사과 담기 게임
- 거스름돈
- 위치 암호화
- ZOAC 2
- Greedy
- 동적 계획 알고리즘
- Today
- Total
목록Python (36)
주니어로서의 백 걸음, 개발자로서의 한 걸음

문제 풀이: 해당 문제는 커플석 'LL'이 2개 이상인 경우에만 컵홀더를 못 쓰는 사람이 발생한다. 먼저 'LL'의 개수를 count에 저장하고 만약 count가 1개 이하라면 모두 컵홀더를 사용할 수 있고 count가 2개 이상이라면 전체 인원에서 count를 빼주고 1을 더해준다.(LLLLLL인 경우 6 - 3 + 1 = 4, 4명만 컵홀더 사용 가능) n = int(input()) m = input() count = m.count('LL') if count

문제 풀이: 해당 문제는 replace함수를 알면 쉽게 풀 수 있다. a = input() a = a.replace("XXXX", "AAAA") a = a.replace("XX", "BB") if 'X' in a: print(-1) else: print(a)

문제 풀이: 앞에서부터 점수를 감소시키는 것보다 뒤에서 앞으로 탐색하면서 점수를 감소시키는 것이 좋다. n = int(input()) l = [] cnt = 0 for _ in range(n): l.append(int(input())) for i in range(n-1, 0, -1): if(l[i]

문제 풀이: 해당 문제는 0에서 1이 될 때 1에서 0이 될 때 cnt를 1 더하고 2로 나누면 된다. 마지막에 cnt + 1을 해주는 이유를 예제3으로 설명하면 cnt = 1, cnt // 2 = 0이기 때문에 1을 더해줘야 한다. l = input() cnt = 0 for i in range(len(l) - 1): if l[i] != l[i + 1]: cnt += 1 print((cnt+1) // 2) 다른 사람 코드 l = input() cnt = 0 prev = '?' for i in l: if i != prev: prev=i cnt += 1 print((cnt)//2) prev는 현재 문자와 바로 이전 문자가 같은지 비교할 때 사용하는 변수로 사용한다. prev를 초기값으로 '?'를 할당하여 초..

문제 풀이: 해당 문제는 에너지 드링크의 양을 내림차순으로 정렬한 다음에 가장 많은 에너지 드링크에 그다음으로 많은 양을 넣으면 된다. n = int(input()) d = list(map(int, input().split())) d.sort(reverse=True) sum = d[0] for i in range(1, len(d)): sum += d[i] / 2 print('%g'%sum)

문제 풀이: 해당 문제는 먼저 첫 번째 두 번째 버튼을 눌러서 듣고 싶은 주파수에 도달했을 때와 즐겨찾기에 지정된 버튼을 눌러서 듣고 싶은 주파수에 도달했을 때를 비교해서 더 좋은 알고리즘을 작성하면 된다. 이 때, 최소한으로 버튼을 누르기 위해서 즐겨찾기 주파수와 목표 주파수의 차이가 가장 작게 만들어야 한다. import sys a,b = map(int,sys.stdin.readline().split()) case = int(sys.stdin.readline()) arr=[] for i in range(case): arr.append(int(sys.stdin.readline())) sum1 = abs(b-a) for i in range(case): arr[i] = abs(b-arr[i]) sum2=m..

문제 풀이: 해당 문제는 입력받은 문자 중에서 첫 번째 글자를 가져온 후, 문자를 순회하며 왼쪽 글자보다 순서가 빠르면 가장 왼쪽에, 아니면 가장 오른쪽에 삽입한다. import sys n = int(sys.stdin.readline()) for _ in range(n): a = int(sys.stdin.readline()) al = list(input().split()) ans = [al[0]] for i in range(1, len(al)): left = ans[0] right = ans[-1] if al[i]

문제 풀이: 해당 문제는 먼저 소가 도착하는 시간을 기준으로 오름차순 정렬을 한다. 그리고 2가지 경우로 구분해서 풀면 된다. 소가 도착했을 때 기다리지 않고 검문 후 바로 입장하거나 앞에 소가 다 검문을 할 때까지 대기하다가 검문 후 입장하는 경우가 있다. n = int(input()) tmp = [] for _ in range(n): a, b = map(int, input().split()) tmp.append((a, b)) tmp.sort() time = 0 for i in tmp: if time < i[0]: time = i[0] + i[1] else: time += i[1] print(time)