프로그래밍 언어 9

[백준] 2442번, 2445번, 2446번, 2552번 [별찍기 (2)]

[2442] ▼지난 별찍기(1) 게시물에서 보여줬던 방식을 좀 더 응용한 것 뿐이다. (참고) 2439번, 2440번, 2441번 [별찍기 (1)] dip_the_source 2439번, 2440번, 2441번 [별찍기 (1)] 본문 백준 (C++) 2439번, 2440번, 2441번 [별찍기 (1)] #fdd4ff 2020. 12. 31. 00:15 Prev 1 2 3 4 5 6 7 Next source-coding.tistory.com =>첫째 줄에선 N-1개의 여백 빈칸과 (2x1)-1개의 *을 포함한 칸 -> · · · · · -> N째 줄에선 0개의 여백 빈칸과 (2xN)-1개의 *을 포함한 칸 #include using namespace std; int main() { int x; cin >>..

[백준] 2439번, 2440번, 2441번 [별찍기 (1)]

[2439번] 첫째 줄부터 다섯번째 줄까지 차례대로 별을 출력한다고 가정하자.->5x5 크기의 직사각형을 생각해본다. -> 첫째 줄에선 4개의 여백 빈칸, 1개의 *를 포함한 칸 ->둘째 줄에선 3개의 여백 빈칸, 2개의 *를 포함한 칸 -> · · · · · -> 다섯번째 줄에선 0개의 여백 빈칸, 5개의 *를 포함한 칸 => 첫째 줄에선 N-1개의 여백빈칸, 1개의 *를 포함한 칸 -> · · · · · -> N번째 줄에선 0개의 여백 빈칸, N개의 *를 포함한 칸 #include using namespace std; int main() { int x; cin >> x; for (int i = 1; i i; j--) { cout 둘째 줄에선 1개의 여백 빈칸 ,4개의 *를 포함한 칸-> · · · ·..

문자열을 나타내기 위한 클래스 "string"

c언어에서는 볼 수 없었던 string 클래스는 문자열 저장과 처리에 필요한 변수와 함수들이 정의되어있다. string 클래스를 사용하면 배열의 크기를 항상 신경써야 했던 c언어와는 다르게 문자열의 크기에 대해 신경하지 않아도 되는 장점을 갖고있다. 내부 구현을 몰라도 얼마든지 string 클래스 안의 멤버 함수들을 사용할 수 있다는 객체 지향의 장점까지 갖고 있다. +)그리고 c언어에서 처럼 char형 배열을 선언하지 않아도 된다. string 객체인 경우, 문자열 입력 시에 공간이 부족하면 자동적으로 크기에 맞추어 공간이 재할당됨. 우선 string 클래스를 사용하기 위해선 이라는 이름의 헤더파일을 포함시켜야 한다. string클래스는 std 이름 공간에 속해있기 때문에, using namespace..

[백준] 11720번

1. 틀린 이유 여러 개의 숫자를 구분할 줄 알아야했다. 배열을 사용하면 될 것같아서 int 배열형으로 이용했지만 그렇게 되면 54321을 입력하면 5, 4, 3 ... 이런식으로 배열이 입력되는 것이 아닌, 배열의 0번째에 54321이라는 숫자가 들어가는 꼴이 되버린다. 2. 필요한 개념 아스키 코드를 이용한다면 깔끔하게 코드를 짤 수 있다. char형으로 배열을 받게되면 54321을 입력할 경우 각각 '5', '4', '3' .. 이런식으로 각자 배열을 받을 수 있다. 총합을 계산할 때만 배열이 char형이었므로, 아스키코드 '0'의 값인 48을 빼준다면 숫자 값으로 총합을 더할 수 있게 되는 것이다. ▼ 다음은 아스키 코드 표의 일부다. 3. 고친 코드 #include using namespace ..

[백준] 10953번

1. 틀렸던 이유 콤마를 어떻게 해결하는 것때문에 애를 먹었다. 처음엔 cin 과 cout를 혼용해서 콤마를 나타나게끔 해야하나 싶은 생각도 했었다. 아니면 문자열 함수 get이라던지 그런 것들을 이용해야하나 생각도 했다. (하지만 아직 그 부분에 대해 개념이 부족하다.) 2. 필요한 개념 생각보다 간단하다. 문자를 받을 수 있는 변수를 하나 더 추가해주면 된다. 그렇게되면 문자는 문자대로 받고 정수로 받게 된 a,b만 따로 계산해서 출력하면 되니 간편했다. 3. 고친 코드 #include using namespace std; int main(){ int a; int b; int n; char c; cin >> n; for (int i=0; i> a >> c >>b; cout

[백준] 10951번

1. 틀리게 된 이유. "입력은 여러 개의 테스트 케이스로 이루어졌다." 라는 조건이 있으므로, 몇 개의 테스트 케이스를 사전에 미리 정한 것이 아닌 계속해서 테스트 케이스를 입력하여 결과를 출력하게끔 하는 것이라고 이해했기에 while문을 이용해 무한 루프를 돌려주었다. 하지만 그 결과 출력초과로 인해 답이 틀렸다고 채점결과가 뜨게 되었다. 출력초과라는 말이 나온다는 것은 내가 문제의 조건보다 더 광활하게 잡았을 가능성이 크다. 그렇다면 while문에 무슨 조건을 넣어야 출력초과라는 말이 걸리지않고 문제 조건을 만족할 수 있을까 2. 필요한 개념 EOF라는 것에 대해 알고있어야 풀 수 있는 문제였다. EOF란 End Of File 을 뜻하며 파일의 끝을 표현하기 위해 사용하는 상수다. 3. 고친 코드 ..

C언어 기초-포인터(1)

포인터의 개념 주소연산자 & 와 간접 참조 연산자 * 포인터 연산 포인터와 함수 포인터와 배열 포인터(pointer)의 개념 포인터는 메모리의 주소를 가지고 있는 변수를 뜻한다. 여기서 메모리의 주소에 대해 좀 더 깊이 알아보자. 우리는 코드를 짤 때 주로 변수를 만들어 사용했다. 그렇다면 이 변수는 어디에서 만들어지는 것일까? >> 메모리(memory) 에 만들어진다. (이 때 메모리의 단위는 바이트이다.) 메모리에서는 각 바이트마다 고유한 주소가 매겨진다. 이들 주소를 사용하여 메모리 바이트에 접근이 가능. >> 프로그램에서 변수를 만들면 이들 변수는 컴파일러에 의하여 메모리 공간의 비어있는 위치를 차지. >> 변수의 크기에 따라서 차지하는 메모리 공간의 크기가 달라진다. 포인터 변수의 선언은 예를 ..