Loading [MathJax]/jax/output/CommonHTML/jax.js

All Posts

[Baekjoon 18870] 좌표 압축 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/18870문제 좌표를 압축하여 나타내는 문제이다.압축된 좌표는 Xi>Xj 를 만족하는 서로 다른 좌표 Xj 의 개수와 같아야 한다. 가장 작은 수가 0 이 되고 그 이후로 1 씩 커지는 좌표라고 생각하면 좋을 듯 하다. 풀이 주어진 좌표들을 오름차순으로 정렬하고, 정렬된 수의 인덱스를 처음 주어진 좌표들의 순서에 맞게 출력해주면 된다.단 같은 수는 같은 인덱스를 가져야 하므로 오름차순으로 정렬할 때 중복을 제거해야 한다. 파이썬에서는 set 을 사용하여 간단하게 중복을 제거할 수 있다.좌표들의 순서에 맞게 인덱스를 정렬하면 가장 작은 수가 0 이 되고 그 이후 수들이 커질 때 마다 1 씩 커지게 된다. 즉 좌표가 압축된다. ..
[Baekjoon 21920] 서로소 평균 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/21920문제 주어진 수열에서 주어진 수와 서로소인 수들을 모두 고르고, 그 서로소인 수들의 평균을 구하는 문제이다. 풀이 수열의 길이가 500,000까지 가능하고, 주어지는 수가 1,000,000까지 가능하기 때문에 반복문을 활용하여 단순하게 접근하면 시간 초과가 날 수 있는 문제이다. 따라서 효율적으로 서로소를 구하도록 접근해야 한다.서로소는 공약수가 1 뿐인 두 정수이다. 즉 주어진 수의 약수로 나누어 떨어지는 수가 있다면 그 수는 서로소가 될 수 없다. 또한 더 생각해본다면 약수 중 소수로만 확인해도 서로소인지 아닌지 확인할 수 있다.따라서 주어진 정수의 약수 중 소수를 골라내야 한다. 약수를 먼저 고르는 것 보다 에라토스테네스의 체를 사용..
[Baekjoon 14915] 진수 변환기 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/문제 주어진 정수 둘 중 앞 정수를 뒷 정수의 진법으로 바꾸어 출력하는 문제이다.주어진 정수들은 모두 10 진수이고, 변환해야 하는 진법은 2 진법 이상, 16 진법 이하이다. 풀이 최대 16 진법까지 가능하고, 10은 A, 11은 B, 12는 C, 13은 D, 14는 E, 15는 F를 사용하기 때문에 미리 리스트를 만들어서 사용하면 좋다.주어진 정수를 주어진 진수로 나눠주고 나머지를 변환하고 정답 리스트에 추가한다. 반복하여 주어진 정수를 변환하는 것이 끝난다면 join 을 사용하여 변환된 정수 리스트를 문자열로 출력한다.가장 처음 주어진 변환해야 하는 정수가 0 이라면 진수와 상관없이 0 을 출력하면 되므로 예외처리 해준다. 코드 decimal..
[Baekjoon 31713] 행운을 빌어요 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/31713문제 각 케이스들에서 현재 있는 줄기와 잎의 개수가 주어진다.이에 대해 각 줄기가 3개 또는 4개의 잎만 가지도록 하기 위해 추가해야 하는 최소 줄기, 잎 개수를 구하는 문제이다. 풀이 케이스에 따라 경우의 수는 크게 세 가지가 나올 수 있다. 아무것도 추가해주지 않거나, 잎을 추가해주어야 하거나, 줄기를 추가해주어야 한다.추가가 필요 없는 경우주어진 잎 개수가 줄기 개수의 3배 이상 4배 이하라면 조건에 만족하므로 추가할 필요가 없다잎을 추가해주어야 하는 경우주어진 잎 개수가 줄기 개수의 3배 미만이라면 잎 개수가 줄기 개수의 3배가 되도록 추가해주면 된다.줄기를 추가해주어야 하는 경우주어진 잎 개수가 줄기 개수의 4배를 초과한다면 줄기..
[Baekjoon 31263] 대한민국을 지키는 가장 긴 힘 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/31263문제 주어진 남은 복무일이 적혀있는 페이퍼를 보고 해당 페이퍼를 작성한 병사 수의 최솟값을 출력하는 문제이다.병사들의 복무 일수가 641일이기 때문에 남은 복무일 수는 1 이상 641 이하이다. 풀이 전역일 페이퍼에 적혀있는 수는 자르게 되면 1 이상 641 이하이고, 불필요한 0이 없어야 한다.조건을 생각해본다면 전역일 페이퍼 시작은 0이 아닌 수이고, 0이 세 번 연속 나올 수 없다.각 복무일을 끊어주면서 가능한지 불가능한지 생각하면서 가능한 남은 복무일이 많이 나오도록 계산한다면 전역일 페이퍼를 적은 최소 인원을 계산할 수 있다. 예를 들어 전역일 페이퍼가 21993 이라면 2일보다 21일이 길고, 21일보다 219일이 기므로 219..
[Baekjoon 26264] 빅데이터? 정보보호! | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/26264문제 주어진 문자열에 bigdata 와 security 라는 단어가 각각 얼마나 있는지 확인하는 문제이다. 풀이 간단하게 count 함수를 사용하여 주어진 문자열에 bigdata 와 security 가 얼마나 있는지 확인할 수 있다.확인하고 비교한 후 조건에 맞게 출력하면 된다. 코드 student = int(input())memo = input()bigdata = memo.count('bigdata')security = memo.count('security')if bigdata == security: print('bigdata? security!')elif bigdata > security: print('bigdata?')el..
[C] 입출력 형식과 서식 지정자
·
Language/C & C++
입출력 형식 C 언어에서는 printf, scanf 등 다양한 함수에서 변수를 입출력에 사용하기 위해 서식 지정자와 플래그 등을 조합해서 사용한다. 예를 들어 a 라는 변수에 숫자를 입력받고, 입력된 숫자를 출력하기 위해서는 아래와 같은 코드를 사용할 수 있다.int a;scanf("%d", &a);printf("%d", a);위 코드에서 %d 에 해당하는 것이 입출력 형식인데, 여기서는 간단하게 서식 지정자만 사용되었다.간단하게 서식 지정자만으로도 사용할 수 있지만, 플래그, 폭 등을 지정해서 사용해야 될수도 있다. 예를 들어서 변수를 16 진수로 출력하거나, 폭을 지정하는 등 원하는 형식으로 출력하려 한다면 서식 지정자 외 플래그 등을 사용해야 한다.입출력 형식은 아래와 같다.%[플래그][폭][.정밀..
[C] 연산자 우선순위
·
Language/C & C++
연산자 연산자는 데이터를 처리하고 조작하는 데에 사용되는 기호나 키워드를 말한다.연산자와 피연산자로 구성하는 수식은 항상 계산된 값을 반환하는데, 이 반환값을 계산하는 것이 연산자이다.여러 개의 연산자가 있는 수식이 있을 때 어떤 연산자를 먼저 적용하여 계산하느냐에 따라 반환값이 달라질 수 있기 때문에 연산자들의 우선순위는 중요할 수밖에 없다. 수학에서 사칙연산을 계산할 때 곱하기와 나누기를 더하기와 빼기보다 먼저 계산하기로 정해놓은 것과 같다.단 보통은 괄호 () 를 사용하여 명시적으로 우선순위를 표현하는 것이 좋기 때문에 우선순위 자체를 암기하기 위해 노력할 필요는 없는 것 같다. 연산자 우선순위 연산자연산 유형결합 규칙 (방향)()[]->.함수 호출배열 인덱스포인터를 통한 멤버 접근멤버 접근→++-..
[Baekjoon 9493] 길면 기차, 기차는 빨라, 빠른 것은 비행기 | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/9493문제 거리와 기차의 속도, 비행기의 속도가 주어졌을 때 얼마나 비행기가 빠르게 도착하는지 구하는 문제이다. 풀이 주어지는 속도는 시속인데 마지막 정답을 출력할 때는 초까지 나타내야 하기 때문에 속도를 초속으로 바꿔준다.시간은 거리 나누기 속도이므로 비행기와 열차의 시간 차이는 아래와 같이 계산할 수 있다.distancetraindistanceair=timedistance(airtrain)air×train=time계산된 시간은 비행기와 열차의 시간 차를 초로 나타낸 것인데 이걸 시, 분, 초로 계산해서 출력하면 된다.출력 형식은 분과 초는 두 ..
[Baekjoon 5698] Tautogram | Python
·
Online Judge/Baekjoon
https://www.acmicpc.net/problem/5698문제 문장의 모든 단어가 같은 글자로 시작하면 Tautogram 이라고 한다.주어진 문장이 Tautogram 인지 판별하는 문제이다. 풀이 map 과 split 을 이용해서 단어들을 끊어주고, 각 단어들이 같은 글자로 시작하는지 확인하면 되는 간단한 문제이다. 주의해야 할 것은 주어지는 문장은 대소문자가 구분되어 있지만 단어들을 검사할 때는 대소문자 구분없이 검사해야 한다. 따라서 입력받을 때 upper 나 lower 을 통해 문장 전체를 대문자나 소문자로 변환해주는 것이 좋다.단어들을 검사할 때는 단어를 [0] 으로 인덱싱하여 첫 글자와 비교해도 좋지만, startswith 를 통해서 비교하는 것이 명확하게 시작점을 비교할 수 있기 때문에..
애스터로이드