'백준' 태그의 글 목록 (2 Page)
본문 바로가기

백준31

백준 2908_상수 [C++] 문제 풀이 이 문제는 두개의 수를 입력받아 두 수를 거꾸로 읽어 비교 후 더 큰 수를 출력하면 되는 문제입니다. 이 문제는 2가지 방법으로 풀이가 가능할 것 같습니다. 1. 입력받을 배열을 2개 생성 + 값을 거꾸로 저장할 새로운 배열 2개 생성 -> 새로운 배열의 값을 int형으로 바꾸어 비교 후 큰 값 출력 2. 세 자리 수이기 때문에 temp 변수를 하나 두어 배열의 0번째 값을 temp에 넣고 2번째 값을 0번째 값으로 , temp는 2번째 값으로 바꾸어 준 후 비교하여 더 큰 값 출력 저는 여기서 첫번째 방법으로 풀이를 진행하였습니다. 입력받을 배열 a와 b, 바뀐값을 넣을 배열 newa와 newb를 생성 후 for문을 이용하여 입력받은 값을 반대로 저장해 주고, atoi를 이용하여 newa와 .. 2022. 7. 9.
백준 1157_단어 공부 [C++] 문제 풀이 이 문제는 단어를 입력받고 그 중에서 가장 많이 사용된 알파벳을 출력하는 문제입니다. 만약 가장 많이 사용된 알파벳이 2개이상인 경우에는 ?를 출력하면 됩니다. 이 문제는 전에 풀었던 알파벳 찾기 문제를 참고하여 각 알파벳이 몇번 사용되었는지 확인하면 되는 비교적 쉬운 문제입니다. (물론 알파벳 찾기 문제를 풀었다는 전제입니다) https://liveloper-jay.tistory.com/118 백준 10809_알파벳찾기 [C++] 문제 풀이 이 문제는 입력받은 단어의 각 알파벳이 몇번째에서 나오는지를 a~z까지 출력해주는 문제입니다. 만약 해당 알파벳이 나왔다면 0번째부터 순서를 출력하면 되고, 알파벳이 나오지 않 liveloper-jay.tistory.com 그런데 이 문제에서는 대문자와 .. 2022. 7. 7.
백준 2675_문자열 반복 [C++] 문제 풀이 이 문제는 숫자를 입력받고 길이가 20을 넘지 않는 선에서 문자열을 입력받으면 입력받은 숫자만큼 각각의 문자를 반복해서 출력하는 문제입니다. 예를 들어 3과 BC를 입력받으면 BBBCCC와 같이 출력이 되게 만들어주면 됩니다. 해결을 위해서 각각의 문자를 반복할 회수 r을 입력받고, 20자를 넘지 않는 선에서 문자열을 입력받기 때문에 각각의 문자를 저장할 크기가 20인 배열 char arr[20]을 생성해주고 이중 for문을 이용해서 배열의 길이보다 작을때, arr[0] 부터 반복할 수만큼 출력해주면 됩니다. 소스코드는 아래와 같습니다. 소스코드 #include #include using namespace std; int main(){ int t,r; char s[20]; cin >> t; f.. 2022. 7. 5.
백준 10809_알파벳찾기 [C++] 문제 풀이 이 문제는 입력받은 단어의 각 알파벳이 몇번째에서 나오는지를 a~z까지 출력해주는 문제입니다. 만약 해당 알파벳이 나왔다면 0번째부터 순서를 출력하면 되고, 알파벳이 나오지 않았을 경우 -1을 출력해주면 됩니다. 먼저 알파벳 수만큼의 배열 alpha[26]과 입력할 수 있는 단어의 최대길이 arr[100]을 선언해 준 후에 arr[0]부터 alpha[0]~alpha[25]까지 비교 후 일치하는 알파벳이 있는 경우 배열의 순번을 알파벳에 해당하는 배열의 값으로 넣어주면 됩니다. 소스코드는 아래와 같습니다. 소스코드 #include #include using namespace std; int main(){ int alpha[26]; char input[100]; int value=0; for (i.. 2022. 7. 4.
백준 11720_숫자의 합 [C++] 문제 풀이 이 문제는 입력할 숫자의 자리수 N을 입력받고, N자리의 수를 공백없이 입력받아 각 자리의 수를 모두 더한 값을 출력하는 문제입니다. N 자리 수를 입력받아야 하기때문에 배열 arr[N] 으로 각 자리수를 입력 받아야하며, 숫자는 공백없이 입력받아야 하기 때문에 int 형의 배열이 아닌 char 형으로 하나의 숫자가 아닌 문자를 하나씩 입력받는다고 생각하면 쉽게 해결할 수 있습니다. 그 다음 입력받은 배열을 정수형으로 변환하는 과정이 필요합니다. 그래서 처음에는 입력받은 문자를 atoi, atoll등 숫자로 바꾸어 그 숫자를 한 자리씩 더하는 방식으로 진행하려 했으나, 수의 범위가 커지면 원하는 값이 출력되지 않는 상황이 발생하였습니다. 그것을 해결하기 위해 고민하던 중 이전에 풀었던 아스키코.. 2022. 7. 4.
백준 11654_아스키 코드 [C++] 문제 풀이 ASCII 는 영문 알파벳을 사용하는 대표적인 문자 인코딩입니다. 아스키는 컴퓨터와 통신 장비를 비롯한 문자를 사용하는 많은 장치에서 사용되며, 대부분의 문자 인코딩이 아스키에 기초를 두고 있습니다. 이러한 아스키코드는 알파벳 및 특수문자를 포함하여 총 128개의 문자로 이루어져 있습니다. 더 자세한 내용은 아스키코드 목록에 대한 표를 참고하시면 됩니다. 이 문제는 이러한 아스키코드를 이용하여 어떠한 문자(대/소), 숫자를 입력하였을 때 그에 해당하는 순번(숫자)를 결과값으로 출력하는 문제입니다. 굉장히 간단하게 풀 수 있는 문제로 입력받은 char 문자를 정수(int)형으로 출력해주면 그에 대한 아스키코드 순번이 출력됩니다. 소스코드 #include using namespace std; in.. 2022. 7. 2.
백준 1436_영화감독 숌 [C++] 문제 풀이 이 문제는 제목에 666이 연속으로 들어가는 수를 찾는 문제입니다. 즉 어떠한 수 i가 1000으로 나누었을 때의 나머지가 666이 되고, 그때마다 +1씩 카운트하여 입력받은 n과 일치하는 수 i를 찾아야 한다는 뜻입니다. 여기까지만 들으면 666, 1666, 2666...... 이런식으로 찾으면 쉽게 해결할 수 있을 것이라는 생각이 듭니다. 하지만 여기에서 고려해야 할 사항이 하나 있습니다. 1~8번째까지의 예시를 바탕으로 풀이를 진행하겠습니다. n=1 -> 666 n=2 -> 1666 n=3 -> 2666 n=4 -> 3666 n=5 -> 4666 n=6 -> 5666 n=7 -> 6665 n=8 -> 6666 예시에서 볼 수 있듯 6666 이전에 666이 연속으로 들어가는 수인 6665가.. 2022. 6. 29.
백준 7568_덩치 [C++] 문제 풀이 이 문제는 인원수와 그들의 키와 몸무게를 입력받아 서로의 덩치를 비교하는 문제입니다. 여기서 덩치를 비교하는 조건은 키와 몸무게로 나누어지며, 조건은 다음과 같이 나누어집니다. 1. 1이 2보다 키도 더 크고 몸무게도 많이 나가는 경우 -> 1이 우선순위 더 높음 2. 1이 2보다 키는 크나 몸무게가 적게 나가는 경우(혹은 그 반대의 경우) -> 1과 2의 우선순위 같음 이 조건을 이용하여 각 인원들을 한명씩 모두 비교하여 우선순위가 낮은 경우 해당하는 순번의 배열의 값을 1 증가 시켜주는 방식으로 풀이를 진행하면 됩니다. ex) arrcm[1] > arrcm[2] && arrkg[1]> arrkg[2] 인 경우 arr[2]의 값을 1 증가 소스코드 #include using namespace.. 2022. 6. 29.
백준 2231_분해합 [C++] 문제 풀이 이 문제는 어떤 임의의 수 n 이 주어졌을 때 n의 생성자 m (m의 분해합이 n이됨) 중 가장 작은 수를 구하는 문제이다. 여기서 분해합은 문제에도 나와있는 예시와 같이 245라는 수가 있으면 245+2+4+5 를 하여 분해합은 256이 된다. 위 분해합에서 (생성자 + 1의자리수 + 10의 자리수 + 100의 자리수) 의 방식으로 분해합을 구한다는 것을 알 수 있으며, 이 생성자가 a라고 할 때 (a%10)을 하여 1의 자리수를 구한 후 (a/10)을 하는 과정을 a가 0이 될 때까지 반복하는 규칙이 있다는 것을 알 수 있습니다. 따라서 n이라는 분해합이 주어지면 1~ (n-1) 까지 1씩 증가하며 분해합을 구하고, 분해합과 일치하는 값이 나오게 되면 해당 값을 출력하고 반복문을 끝내면 됩.. 2022. 6. 28.