backjoon 8

[백준 C++] 5073번 - 삼각형과 세 변

문제:삼각형의 세 변의 길이가 주어질 때 변의 길이에 따라 다음과 같이 정의한다.Equilateral :  세 변의 길이가 모두 같은 경우Isosceles : 두 변의 길이만 같은 경우Scalene : 세 변의 길이가 모두 다른 경우단 주어진 세 변의 길이가 삼각형의 조건을 만족하지 못하는 경우에는 "Invalid" 를 출력한다. 예를 들어 6, 3, 2가 이 경우에 해당한다. 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못한다.세 변의 길이가 주어질 때 위 정의에 따른 결과를 출력하시오. 입력:각 줄에는 1,000을 넘지 않는 양의 정수 3개가 입력된다. 마지막 줄은 0 0 0이며 이 줄은 계산하지 않는다. 출력:각 입력에 맞는 결과 (Equilateral,..

코딩 2025.04.14

[백준 C++] 1427번 - 소트인사이드

문제:수가 주어지면, 그 수의 각 자리수를 내림차순으로 정렬해보자. 입력:첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다. 출력:첫째 줄에 자리수를 내림차순으로 정렬한 수를 출력한다.오답:(13) e는 숫자가 아닌 문자로 인식된다. 숫자로 바꿔주려면 ( 문자 - '0' )어째 매번 같은걸 틀리고 있는것 같다... (16) 기본적으로 sort(시작, 끝) = 작은수 ~ 큰수 → 오른차순 정렬이 된다.내림차순 정렬을 하려면 sort(시작, 끝, greater()) 써주기

코딩 2025.04.13

[백준 C++] 2751번 - 수 정렬하기2

문제:N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력:첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력:첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.오답이유: 시간초과for문으로 큰수를 뒤로보내면서 버블정렬을 해줬다. 답은맞는데 시간초과나서 실패. 벡터로 받고 sort()함수로 정렬하면 시간을 아낄수있다는 챗지피티의 조언으로 벡터로 써봤는데 그래도 시간초과가 떴다.(25) 알고보니까 endl이 성능을 잡아먹는 주범이라고 한다. 버블정렬은 안되고 벡터버전에서 "\n"으로 바꿔주니까 성공했..

코딩 2025.04.13

[백준 C++] 2738번 - 행렬 덧셈

동적할당 연습할겸 해봤는데 2차원이라 어려웠다. (13)** = 행가리키는 포인터 + 열가리키는 포인터일단 *[rows]로 포인터에 행주소 넣어주고for문으로 행안에 열을 넣어준것같다.  (25)입력받는걸 저렇게 썼는데 아래와 같이 아주간단하게 넣을수도 있더라! (52) 2차원배열 메모리해제는 먼저 for문으로 행안에 든 열을 풀어주고 밖에서 행을가리키는 변수를 풀어주느라 두개를 쓴것 같다.맞나 모르겠네, 어렵다.

코딩 2025.04.11

[백준 C++] 2444번 - 별 찍기 7

1) 늘어나는별 n을 입력받고 n줄까지 늘어나는 별을 출력한다.i를 줄번호로 for문돌려준다.공백이 -1씩 줄어들며 출력되므로 +1하는 i를 이용해 n-i만큼 공백을 출력해준다.별의개수는 줄번호*2-1씩 늘어나는 규칙인데, 이때 줄번호 i가 0부터시작하면 첫번째줄에 별 출력이 안되므로 i는 1부터 시작하도록 한다. (1 ~ n)2) 감소하는 별은 조금 헷갈린다.다시 줄번호 i=1로 잡고 이번엔 한줄 덜 출력되어야 하므로 (1 ~ n-1)범위로 i++ for문을 써준다.공백은 줄번호만큼 출력되도록한다.별의개수는 처음에 ((n-1)*2-1) 개 출력후 -1 씩 출력될수 있도록 for문을 돌려주었다.헷갈려서 정리해봤는데 그래도 헷갈리네

코딩 2025.04.11

[백준 C++] 1152번 - 단어의 개수

문제:영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다. 입력:첫 줄에 영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 공백 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 문자열은 공백으로 시작하거나 끝날 수 있다. 출력:첫째 줄에 단어의 개수를 출력한다. 예제:1)The Curious Case of Benjamin Button62) The first character is a blank63)The last character is a blank 6오답:단어의 개수를 공백개수+1로..

코딩 2025.04.08

[백준 C++] 11720번 - 숫자의 합

문제:N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오. 입력:첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다. 출력:입력으로 주어진 숫자 N개의 합을 출력한다.오답:공백없이 숫자들을 어떻게 저장해야 할지 모르겠어서 char ch변수를 만들어 하나씩 집어넣고 그걸 또 하나씩 정수로 바꿔 더해보는걸 시도했다. 그랬더니 출력이 이상한 수가 나왔다. 문자로 각각 입력은 됐는데 (int)ch를 하면서 숫자가 아니라 아스키코드 값을 더해줘서 이상한 숫자가 나온거라 한다.ex) '5' = 53, '4' = 52, '3' = 51 위에처럼 string을 배열처럼 인덱스로 하나씩 가져다 쓸수있는것.문자를 숫자로 변환할때는 ..

코딩 2025.04.08

[백준 C++] 10871번 - X보다 작은 수

문제:정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오. 입력:첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다. 출력:X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.오답:오늘 벡터를 처음배워서 한번 써봤다.입력까지는 되는데 출력이 안됐다. 7번줄에서 벡터를 선언 → 14번줄에서 직접인덱스로 접근하면 안된다고 함. (초기 크기가 0이므로 런타임 에러가 발생?)c언어처럼 for문으로 i늘려가며 배열에 값 넣으려고 했는데 c++ 벡터에서..

코딩 2025.04.01