261001 몰랐던것들
2차원 배열 [,]
int[,]= 대괄호 하나 안에 쉼표. 쉼표 하나 = 차원 하나- 행(row) = 가로줄, 열(col) = 세로줄. column은 "기둥"이라 세로
[행, 열]순서 = 좌표로는[y, x](Unity(x, y)와 반대)GetLength(0)= 행 수,GetLength(1)= 열 수. 숫자는 "몇 번째 자리(차원)를 묻냐"Length= 전체 칸 수 (행 x 열)new int[5, 6]= 크기 먼저, 값은 나중에 /{ {...}, {...} }= 값을 알 때, 크기는 자동- 못 찾음 표시로 -1 사용 (배열 번호는 0부터라 -1은 절대 진짜 위치가 아님)
가변 배열 [][]
int[][]= 배열을 담은 배열 (서랍장 안의 서랍)new int[N][]= 서랍 개수만 정함.new int[N][k]는 에러records[i] = new int[k]= i번째 서랍을 k칸으로 만들기records[i]= 서랍 하나(배열),records[i][r]= 서랍 안 칸 하나(숫자)- 대괄호는 왼쪽부터 한 겹씩 벗김. 두 번째 칸만 따로 찾는 방법은 없음
[,]는 한 번에[행, 열]다 줘야 함 /[][]는 한 겹씩 가능
배열 공통
{ N }= N칸이 아니라 N이 들어 있는 1칸 배열. 칸 수는new int[N]- 칸 번호(
i)와 칸 안의 값(array[i])을 구분할 것 - 마지막 칸 번호 =
Length - 1 - 새 배열 없이 뒤집기 = 양 끝을 temp로 맞바꾸며 가운데까지 (
Length / 2). 짝수, 홀수 다 됨 - 번호로 칸 찾기 =
배열[번호 - 1] - 배열은 반복문 밖에서 만들 것 (안에서 만들면 매번 새로 만들어져 값이 사라짐)
문자열 표기
@"..."= 백슬래시 그대로, 줄바꿈 그대로. 큰따옴표는""로$@"..."= 보간 + 축자.{변수}는 값으로,\는 그대로{값,10}오른쪽 정렬,{값,-10}왼쪽 정렬. 폭 자리엔 상수만 가능{값,폭:포맷}순서로 같이 쓸 수 있음- 보간 안의 삼항 연산자는 괄호 필수
{(조건 ? a : b)} F1,F3은 출력할 때 쓰는 포맷. 입력 안내 문구에 쓰면 글자로 찍힘- 화면에 보이는 값(F1)이 아니라 실제 값으로 판정할 것
문자열 함수
- new string : 같은 문자를 원하는 개수만큼 반복한 문자열을 만듦 (샵 3개 -> ###). 개수에 변수 사용 가능
- Substring : 시작 위치, 개수 -> 잘라서 꺼내기
- Remove : 시작 위치, 개수 -> 지우기. 두 번째는 끝 위치가 아니라 개수
- Insert : 위치, 넣을 문자열 -> 끼워 넣기
- 개수 구하기 = 끝 - 시작 + 1
- 문자열 함수는 원본을 안 바꿈. 결과를 변수에 받아야 함
- D6 포맷은 정수 전용. 문자열 왼쪽 채우기는 PadLeft : 최소 길이 6, 채울 문자 0
- Replace는 정확히 그 글자만 바꿈. "숫자 전부" 같은 종류로는 못 바꿈
- IsDigit : 글자 하나가 숫자인지 확인 (char 타입의 기능)
- 문자열 고치는 순서 : ToCharArray로 배열 만들기 -> 칸 수정 -> new string으로 다시 문자열
기타
- ReadLine은 항상 string. bool과 비교하려면
bool.Parse - "여유"는 부호에 의미가 있음 (음수 = 초과). "차이"일 때만 Abs
- 에러 경로에 다른 문제 번호가 보이면 시작 프로젝트 확인
columns,column처럼 비슷한 이름 오타 주의- "0 이상", "넘지 않음" 같은 문장은 검사가 아니라 입력 보장일 때가 많음
공부 방법
- 막히면 예상 결과부터 보고 "무엇이 무엇으로 바뀌었나" 말로 정리
- 입력 예시에 줄마다 이름표 붙이기
- 예시 하나만 넣지 말고 모양이 다른 입력으로도 테스트
- 실행 결과를 예상 결과 옆에 놓고 한 글자씩 비교
- 밤 11시 이후 공부는 얻는 것보다 잃는 게 많음



