반응형

11195

https://www.acmicpc.net/problem/11195

 

11195: Peragrams

Per recently learned about palindromes.

www.acmicpc.net

[정답]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
 
int main(void){
    int a[26={0,};
    int cnt = 0;
    int j=0;
    string s;
    cin >> s;
    while (s[j]){
        a[s[j]-'a'+= 1;
        j++;
    }
    for (int i=0; i<26; i++){
        if (a[i]%2) cnt++;
    }
    if (cnt > 1cout << cnt-1;
    else cout << 0;
    return 0;
}
cs

.

.

.

[풀이]

Palindrome과 유사한 Peragram 만들기이다.

Peragram을 만들기 위해 몇개의 문자를 제거해야하는지 구하면 된다.

 

p.s.

해석이 없어서 구글 번역 돌려 풀었다.

반응형
반응형

18111

https://www.acmicpc.net/problem/18111

 

 

[정답]

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <iostream>
using namespace std;
 
int main() {
    cin.tie(NULL);
    cout.tie(NULL);
    ios_base::sync_with_stdio(false);
 
    int board[501][501= { 0, };
    int m, n;
    long long b;
    int mn = 99999;
    int mx = 0;
    int a[257= { 0, };
    int res = 0;
 
    cin >> m >> n >> b;
 
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < m; j++) {
            cin >> board[i][j];
            if (mn > board[i][j]) mn = board[i][j];
            if (mx < board[i][j]) mx = board[i][j];
        }
    }
 
 
    for (int i = 0; i < n; i ++) {
        for (int j = 0; j < m; j++) {
            a[board[i][j]] += 1;
        }
    }
 
    while (mn < mx) {
        if (mn == mx) break;
        if (b >= a[mn] && a[mn] <= a[mx]*2) {
            res += a[mn];
            b -= a[mn];
            a[mn + 1+= a[mn];
            mn++;
        }
        else {
            res += a[mx] * 2;
            b += a[mx];
            a[mx - 1+= a[mx];
            mx--;
        }
    }
    cout << res << " " << mx;
    return 0;
}
cs

.

.

.

[풀이]

오답률이 꽤 있는 구현 문제.

제한 시간은 넉넉하니 브루트포스로 조건에 맞춰 구현하면 된다.

 

p.s.

문제 이름도 재밌고, 실버 티어에서 연습하기 좋은 문제이다.

반응형
반응형

2470

https://www.acmicpc.net/problem/2470

 

 

[정답]

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
32
33
34
35
36
37
38
39
40
41
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
 
#include <iostream>
#include <algorithm>
using namespace std;
 
#define ABS(a) ((a) <0-(a):(a))
 
int n;
int s, e;
int a[100001= { 0, };
int res = (int)21e8;
int ansA, ansB;
 
void input() {
    scanf("%d"&n);
    s = 0;
    e = n - 1;
    for (int i = 0; i < n; i++scanf("%d", a + i);
    sort(a, a + n);
}
 
int main(void) {
    int temp;
    input();
    while (s < e) {
        temp = a[s] + a[e];
        if (ABS(temp) < res) {
            res = ABS(temp);
            ansA = a[s];
            ansB = a[e];
        }
        if (res == 0break;
        else if (temp < 0) s++;
        else e--;
    }
    cout << ansA << " " << ansB;
    return 0;
}
cs

.

.

.

[풀이]

투포인터 문제다.

 

p.s.

오랜만에 글을 올린다.

백준 문제풀이는 계속 해왔고, 이전에 푼 문제들을 꾸준히 올려보겠다.

C++ 전문이 되어버렸다만..

반응형
반응형

10699

https://www.acmicpc.net/problem/10699

 

10699번: 오늘 날짜

서울의 오늘 날짜를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

[정답]

1
2
import datetime
print(str(datetime.datetime.now())[:10])
cs

.

.

.

[풀이]

datetime이라는 모듈을 이용한다.

몇시몇분몇초까지 나오기에 슬라이싱을 해준다.

 

p.s.

이런 모듈, 함수가 있는지 몰랐다.

사실 뭐, 알고리즘 문제 풀 때 쓸 일이 있을까 싶다.

반응형
반응형

https://replit.com/languages/python3

 

Python Online Compiler & Interpreter

Write and run Python code using our Python online compiler & interpreter. You can build, share, and host applications right from your browser!

replit.com

replit이라는 곳이다.

인터프리터 사이트 중 디자인이 제일 깔끔하다.

 

프로그램을 다운로드 받지 못하는 상황에서 유용하게 쓰고 있다.

로그인 필요X

다운로드 필요X

다른 언어도 가능O

p.s.

다운로드한 파일이 매번 초기화되는 공용 PC에서 이용하고 있다.

매번 visual studio code 다운받기 귀찮아서.

반응형
반응형

2530

https://www.acmicpc.net/problem/2530

 

2530번: 인공지능 시계

첫째 줄에 종료되는 시각의 시, 분, 초을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수이며, 분, 초는 0부터 59까지의 정수이다. 디지털 시계는 23시 59분 59초에서 1초가 지나면 0시 0

www.acmicpc.net

[정답]

1
2
3
4
5
6
7
8
9
10
11
import sys
a, b, c = map(int,sys.stdin.readline().split())
= int(sys.stdin.readline())
+= s
+= c//60
c %= 60
+= b//60
b %= 60
a %= 24
 
print(a, b, c)
cs

.

.

.

[풀이]

a시간 b분 c초

초(c)부터 시작해서 60넘어가면 윗 단위로 올려준다.

 

p.s.

설명할게 없음

반응형
반응형

1158

https://www.acmicpc.net/problem/1158

 

1158번: 요세푸스 문제

첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000)

www.acmicpc.net

[정답]

1
2
3
4
5
6
7
8
9
10
11
12
import sys
N, K = map(int, sys.stdin.readline().split())
 
= [i for i in range(1,N+1)]
= []
= 0
while a:
  c += K-1
  if c >= len(a):
    c %= len(a)
  b.append(str(a.pop(c)))
print('<'", ".join(b), '>', sep = '')
cs

.

.

.

[풀이]

배열 a에서 c번(index)마다 항목을 삭제(pop)해준다.

pop해서 반환된 값을 b에 추가해준다.

 

이 때 배열 a에서 값들이 하나씩 삭제되므로

c는 K-1만큼만 증가시켜준다.

 

c가 배열 a의 길이보다 길어지면

처음으로 돌아가 카운트하는 순환 구조이므로

나머지 연산을 이용하여 c를 줄여준다.

 

p.s.

index를 계산하는 방법을 사용해야한다.

배열 자체를 pop과 append를 통해서 뗐다 붙였다 풀었더니

시간초과로 실패했다.

반응형
반응형

11170

https://www.acmicpc.net/problem/11170

 

11170번: 0의 개수

N부터 M까지의 수들을 종이에 적었을 때 종이에 적힌 0들을 세는 프로그램을 작성하라. 예를 들어, N, M이 각각 0, 10일 때 0을 세면 0에 하나, 10에 하나가 있으므로 답은 2이다.

www.acmicpc.net

[정답]

1
2
3
4
5
6
7
8
import sys
= int(sys.stdin.readline())
for t in range(T):
  N, M = map(int, sys.stdin.readline().split())
  c = 0
  for i in range(N,M+1):
    c += str(i).count('0')
  print(c)
cs

.

.

.

[풀이]

int형일 때는 0을 세기 힘들기 때문에

str형으로 변환해준 후

count()를 통해 각 문자의 '0'의 개수를 구한다.

 

p.s.

더 설명할게 없음

반응형

+ Recent posts