leetcode 브러시 노트 - Excel 목록 이름
제목 설명:
Excel 테이블에 해당하는 열 이름을 반환하는 양의 정수를 지정합니다.
예:
1:A
2:B
28:AB
701:ZY
문제 해결 방법:
이 문제는 leetcode에 표시된 것이 간단하기 때문에 나는 본래 그것이 청동인 줄 알았는데, 끝내 왕이 될 줄은 생각하지 못했다.오전 내내 연구했더니 머리가 굳어버렸지만 여전히 이해하지 못했다.남의 문제풀이를 보고 점심에 잠을 잘 때도 곰곰이 생각해 보니 결국 뒤죽박죽이 되었다.코드를 옮겨와서 제 이해를 말씀드리겠습니다.
AC 코드:
public String convertToTitle1(int n){
String temp = "";
while (n > 0){
char s = (char)((n-1) % 26 + 'A');
temp = s + temp;
n = (n-1)/26;
}
return temp;
}
처음에는 간단한 10진법이 26진법으로 바뀌는 문제인 줄 알았는데 몇 차례 벽에 부딪혀 보니 일이 이렇게 간단하지 않았다.
코드에 표시된 이 n-1 두 개를 주의하세요.
먼저 첫 번째 n-1을 보면 10진수 1~26은 알파벳 A~Z에 대응하기 때문에 A를 기점으로 할 때 숫자 n=1~26은 각각 0-25를 더하여 A~Z로 변하기 때문에 10진수를 토대로 1을 줄이고 모델을 취해야 한다.그러나chars=(char)(n%26+'A'-1)라고 쓸 수도 없고, 이렇게 쓰면 n이 26으로 나누어질 때'Z'로 계산해야 하는데, 이렇게 계산하면'A'-1='@'로 계산된다.
두 번째 n-1에 관해서는 이 excel 서열과 10진법의 차이를 알아차렸는지 모르겠습니다.10진법의 한 자리 채움은 열 자리보다 1이 적다. 즉, 한 자리 채움은 9이고 열 자리가 1일 때는 10을 대표한다.이 excel 서열은 AZ가 나타날 수 있는데 A는 26을 대표하고 Z는 26을 대표한다. 이것은 매우 매혹적이다. 여기는 27을 채우고 다시 진입하지만 진입하는 위치는 26을 대표한다.따라서 26의 배수, 예를 들어 52가 BZ로 변하는 것을 방지하기 위해 맨 마지막에 26이 하나 소모되었기 때문에 26에서 1위로 들어가기만 하면 된다.그래서 두 번째 n-1은 이런 상황을 방지하는 것이다.
사실 나는 결국 이 문제가 매우 혼란스러운 이유는 우리의 사고 관성에 부합되지 않기 때문이라고 생각한다.우리의 10진법, 2진법, 16진법 등은 모두 0이 있는데, 이 excel 서열은 0이 존재하지 않고, 1-26만 존재하며, 27이 되어서야 비로소 한 자리를 전진한다.
전재 대상:https://www.cnblogs.com/yingying7/p/11578855.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSON
JSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다.
그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다.
저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.
이 문제는 leetcode에 표시된 것이 간단하기 때문에 나는 본래 그것이 청동인 줄 알았는데, 끝내 왕이 될 줄은 생각하지 못했다.오전 내내 연구했더니 머리가 굳어버렸지만 여전히 이해하지 못했다.남의 문제풀이를 보고 점심에 잠을 잘 때도 곰곰이 생각해 보니 결국 뒤죽박죽이 되었다.코드를 옮겨와서 제 이해를 말씀드리겠습니다.
AC 코드:
public String convertToTitle1(int n){
String temp = "";
while (n > 0){
char s = (char)((n-1) % 26 + 'A');
temp = s + temp;
n = (n-1)/26;
}
return temp;
}
처음에는 간단한 10진법이 26진법으로 바뀌는 문제인 줄 알았는데 몇 차례 벽에 부딪혀 보니 일이 이렇게 간단하지 않았다.
코드에 표시된 이 n-1 두 개를 주의하세요.
먼저 첫 번째 n-1을 보면 10진수 1~26은 알파벳 A~Z에 대응하기 때문에 A를 기점으로 할 때 숫자 n=1~26은 각각 0-25를 더하여 A~Z로 변하기 때문에 10진수를 토대로 1을 줄이고 모델을 취해야 한다.그러나chars=(char)(n%26+'A'-1)라고 쓸 수도 없고, 이렇게 쓰면 n이 26으로 나누어질 때'Z'로 계산해야 하는데, 이렇게 계산하면'A'-1='@'로 계산된다.
두 번째 n-1에 관해서는 이 excel 서열과 10진법의 차이를 알아차렸는지 모르겠습니다.10진법의 한 자리 채움은 열 자리보다 1이 적다. 즉, 한 자리 채움은 9이고 열 자리가 1일 때는 10을 대표한다.이 excel 서열은 AZ가 나타날 수 있는데 A는 26을 대표하고 Z는 26을 대표한다. 이것은 매우 매혹적이다. 여기는 27을 채우고 다시 진입하지만 진입하는 위치는 26을 대표한다.따라서 26의 배수, 예를 들어 52가 BZ로 변하는 것을 방지하기 위해 맨 마지막에 26이 하나 소모되었기 때문에 26에서 1위로 들어가기만 하면 된다.그래서 두 번째 n-1은 이런 상황을 방지하는 것이다.
사실 나는 결국 이 문제가 매우 혼란스러운 이유는 우리의 사고 관성에 부합되지 않기 때문이라고 생각한다.우리의 10진법, 2진법, 16진법 등은 모두 0이 있는데, 이 excel 서열은 0이 존재하지 않고, 1-26만 존재하며, 27이 되어서야 비로소 한 자리를 전진한다.
전재 대상:https://www.cnblogs.com/yingying7/p/11578855.html
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.